我有一个名为“name=fileImage”的文件输入。现在我在下面有 php 代码,它检查文件夹(ImageFiles)中是否存在文件:
if (file_exists("ImageFiles/" . $_FILES["fileImage"]["name"]))
{
}
我的问题是,如果文件夹中确实存在一个文件,如何对其进行编码以便它仍然上传文件但它给它一个不同的文件名。也许像在文件名的末尾自动添加一个数字给它一个不同的文件名?
我有一个名为“name=fileImage”的文件输入。现在我在下面有 php 代码,它检查文件夹(ImageFiles)中是否存在文件:
if (file_exists("ImageFiles/" . $_FILES["fileImage"]["name"]))
{
}
我的问题是,如果文件夹中确实存在一个文件,如何对其进行编码以便它仍然上传文件但它给它一个不同的文件名。也许像在文件名的末尾自动添加一个数字给它一个不同的文件名?
$_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
如果您想将上传的文件重命名为您自己选择的名称,您可以尝试
<?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++ 并找到一种方法来存储其值以供将来参考。