2013-10-10 77 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