2013-10-10 71 views
0

我有一段代碼上傳文件使用它的當前文件名,這是可以的,除非有一個文件已經在服務器上使用該名稱和擴展名。如何修改我的代碼,以便在重命名代碼之前使用隨機臨時文件名來上傳代碼?使用隨機臨時文件名與PHP上傳文件

這裏是我的代碼:

if(!empty($_FILES['file']['name'])) { 
copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$_FILES['file']['name']) or die("Error uploading file."); 
$ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], "."))); 
$filename = $url.$ext; 
rename(WEB_UPLOAD."/pdf/".$_FILES['file']['name'], WEB_UPLOAD."/pdf/".$filename);  
mysql_query ("UPDATE downloads SET file ='".$filename."' WHERE id = '".$insertid."'") or die (mysql_error()); 
} 

感謝您一直以來的幫助! 皮特

回答

1
if(!empty($_FILES['file']['name'])) { 
    $targetFile = time().$_FILES['file']['name']; 
    copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$targetFile) or die("Error uploading file."); 
    $ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], "."))); 
    $filename = $url.$ext; 
    rename(WEB_UPLOAD."/pdf/".$targetFile , WEB_UPLOAD."/pdf/".$filename);  
    mysql_query ("UPDATE downloads SET file ='".$filename."' WHERE id = '".$insertid."'") or die (mysql_error()); 
} 

帶文件名添加當前時間戳記這樣的文件名是唯一的。

1
//get the extension 
$ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], "."))); 
//generate random name 
$random_name = uniqid(); 
copy($_FILES['file']['tmp_name'], WEB_UPLOAD."/pdf/".$random_name . '.' . $ext) or die("Error uploading file."); 

現在做任何你想要的。保存的文件名會$random_name.'.'.$ext