如何上传具有不同文件名的文件

时间:2012-04-14 13:43:05

标签: php

我有一个名为'name = fileImage'的文件输入。现在我有下面的PHP代码,它检查文件夹(ImageFiles)中是否存在文件:

if (file_exists("ImageFiles/" . $_FILES["fileImage"]["name"]))
  {

  }

我的问题是,如果文件夹中确实存在文件,那么它如何编码以便它仍然上传文件但它给它一个不同的文件名。也许类似于在文件名末尾自动添加一个数字以给它一个不同的文件名?

2 个答案:

答案 0 :(得分:6)

$_FILES只是一个变量,恰好是超全局变量,并预先填充了文件上传数据。意思是你可以很容易地改变它。

例如:

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $parts = explode(".",$_FILES['fileImage']['name']);
    $ext = array_pop($parts);
    $base = implode(".",$parts);
    $n = 2;
    while( file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++;
    $_FILES['fileImage']['name'] = $base."_".$n.".".$ext;
}
// now use $_FILES['fileImage']['name'] just like you would normally

答案 1 :(得分:0)

如果要将上传的文件重命名为您自己选择的名称,可以尝试

<?php

    //Any file name user/uploader has chosen/used on his/her computer
    $tmp_name = $_FILES["domainfile"]["tmp_name"];

    //Name you want
    $name = "MyDesiredName.png"; //save as MyDesiredName.png

    //Move/save file
    move_uploaded_file($tmp_name, $name);

?>

显然,每次上传新文件时,此代码都会替换旧文件 为了不让这种情况发生,您需要在$ name中引入一些变量,并执行$ name ++并找到一种方法来存储其值以供将来参考。