1

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

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

  }

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

4

2 回答 2

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
于 2012-04-14T13:47:33.570 回答
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++ 并找到一种方法来存储其值以供将来参考。

于 2012-04-14T14:35:24.920 回答