2015-02-23 253 views
0

因此,我已经按照此链接http://www.w3schools.com/php/php_file_upload.asp来创建照片上传功能,而不是它说该文件已经上传,当有另一个同名的文件,我将如何改变它文件名称以前还没有使用的其他文件。照片上传防止覆盖

换句话说,如果有另一张同名照片,我仍然希望它上传,但我不希望它覆盖现有的照片。

我basicaly想别的东西来代替这做那

// Check if file already exists 
if (file_exists($target_file)) { 
echo "Sorry, file already exists."; 
$uploadOk = 0; 

,以便其像这样

// Check if file already exists 
if (file_exists($target_file)) { 
"do something to change file name" 
$uploadOk = 1; 

更新:我得到它的工作。我只是这样做,它会将每个图像重命名为一个独特的ID,如下面所述。感谢

也在这个建议应该是这样

$newTarget_file = $target_dir . uniqid() . "." . end($target_file); 
+0

只要检查'file_exists($ target_file)'如果是的话重命名并上传文件 – 2015-02-23 06:03:30

+0

但我可以自动执行吗?我不希望他们必须重命名它,只是为了找出该名称也被采取,然后必须重新执行 – 2015-02-23 06:07:10

+0

上传后在服务器上随机生成文件名? – Jon 2015-02-23 06:08:38

回答

1

添加随机numers重命名文件

$name = explode(".",$_FILES["file"]["name"]); 
$newName = rand(1,99999) . '.' .end($name); 
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newName); 

或者你也把if条件来验证文件名存在与否。如果文件可用,请添加一些内容以重命名文件。

+0

应该使用[uniqid](http://php.net/uniqid)而不是1-9999之间的随机^^ – Jon 2015-02-23 06:20:41

+0

如果你想添加uniq id,那么它应该用作 $ newName = uniqid()。end($ name); 或 $ newName = end($ name).uniqid(); – 2015-02-23 06:27:09

+0

这仍然只是覆盖它 – 2015-02-23 06:37:28