2016-09-28 60 views
1

美好的一天每个人,如果名称和文件扩展名匹配其中一个保存的记录,我想阻止上传文件。我的代码如下,但我怎样才能避免重复的条目?如何避免使用PHP上传重复文件?

"My sample array" 
Array 
(
    [upload-file] => Array 
     (
      [name] => Penguins.jpg 
      [type] => image/jpeg 
      [tmp_name] => C:\xampp\tmp\phpC87.tmp 
      [error] => 0 
      [size] => 777835 
     ) 

) 

case 'upload-file': 

    $arr = [ 
     ":userid" => $_SESSION['loggedIn_PH'][0]['user_id'], 
     ":filename" => $_FILES['upload-file']['name'], 
     ":filelink" => $_FILES['upload-file']['tmp_name'] 
     ]; 

     $allowed = array('xls','xlsx'); 
     $filename = $_FILES['upload-file']['name']; 
     $ext = pathinfo($filename, PATHINFO_EXTENSION); 

     if(!in_array($ext,$allowed)) { 
      $response_code = -1; 
     }else{ 
      $response_code = 1; 
      $folder = time(); 
      mkdir("path/".$folder); 
      $file = "path".DIRECTORY_SEPARATOR.$folder.DIRECTORY_SEPARATOR.$_FILES['upload-file']['name']; 
        move_uploaded_file($_FILES['upload-file']['tmp_name'], $file); 

     $query = "INSERT INTO file_rec_tbl (`file_name`, `file_datetime`,`file_link`, `user_id`) 
        VALUES (:filename, '".date('Y-m-d H:i:s')."',:filelink,:userid)"; 

     $stmt = $con -> prepare($query); 
     $stmt -> execute($arr); 

    } 

    exit(json_encode(array('r_code' => $response_code))); 
    break; 
+0

打开要保存文件,并询问是否存在该名称的文件,如果其真,那么不保存 –

+0

会告诉你一个示例代码的文件夹?我的新手.. –

+1

你的脚本是相当不安全的。我建议你看看我对这个问题的回答:http://stackoverflow.com/questions/38509334/full-secure-image-upload-script它为上传的文件生成唯一的文件名,但更重要的是,它会教你如何编写安全的上传脚本。 – icecub

回答

1
<?php 
$file='file-to-check.ext'; 
if (file_exists($file)) { 
    echo "exists"; 
} else { 
    echo "not exist"; 
} 
?> 

对我的作品 - 显然$文件还可以包含一个路径 - 这个脚本仅检查当前文件夹

+0

但我同意@icecub脚本中需要更多工作 – kerry

+0

感谢您的回应。 –

0

简单的代码可能是这样的:

$file_name = 'path/to/file_name.ext'; 
if (file_exist($file_name)) { 
    return true; 
} else { 
    move_uploaded_file($_FILES['upload-file']['tmp_name'], $file_name); 
    insert into database; 
    return true; 
} 

之外,你不应该将两个文件与文件名进行比较。

+0

感谢您的回复。 –

0
<?php 
case 'upload-file': 

$arr = [ 
    ":userid" => $_SESSION['loggedIn_PH'][0]['user_id'], 
    ":filename" => $_FILES['upload-file']['name'], 
    ":filelink" => $_FILES['upload-file']['tmp_name'] 
    ]; 

    $allowed = array('xls','xlsx'); 
    $filename = $_FILES['upload-file']['name']; 
    $ext = pathinfo($filename, PATHINFO_EXTENSION); 

    if(!in_array($ext,$allowed)) { 
     $response_code = -1; 
    }else{ 
     $response_code = -1; 
     $folder = time(); 
     mkdir("path/".$folder); 
     $file = "path".DIRECTORY_SEPARATOR.$folder.DIRECTORY_SEPARATOR.$_FILES['upload-file']['name']; 
if(!file_exists($file)){ 
    $response_code = 1; 
       move_uploaded_file($_FILES['upload-file']['tmp_name'], $file); 

    $query = "INSERT INTO file_rec_tbl (`file_name`, `file_datetime`,`file_link`, `user_id`) 
       VALUES (:filename, '".date('Y-m-d H:i:s')."',:filelink,:userid)"; 

    $stmt = $con -> prepare($query); 
    $stmt -> execute($arr); 
} 

} 

exit(json_encode(array('r_code' => $response_code))); 

?> 
+0

谢谢你的回应。 –