PHP-将文件上载到目录并将文件扩展名添加到底部时的随机文件名?
我使用php、html和java制作了一个uload系统,但我担心重复文件。如何使用随机名称保存并添加扩展名PHP-将文件上载到目录并将文件扩展名添加到底部时的随机文件名?,php,html,Php,Html,我使用php、html和java制作了一个uload系统,但我担心重复文件。如何使用随机名称保存并添加扩展名 window.addEventListener(“粘贴”,e=>{ 如果(e.clipboardData.files.length>0){ const fileinput=document.querySelector(“myFile”); fileImput.files=e.clipboardData.files; } }); 在文件名末尾添加时间戳,使其唯一 $fileName
window.addEventListener(“粘贴”,e=>{
如果(e.clipboardData.files.length>0){
const fileinput=document.querySelector(“myFile”);
fileImput.files=e.clipboardData.files;
}
});代码>
在文件名末尾添加时间戳,使其唯一
$fileName = time() .' '. $_FILES['image']['name'];
在一些函数中,您可以用多种语言生成随机字符串。例如,在PHP中,可以使用md5()
和uniqid()
您的代码正在上载具有原始文件名的文件。因此,如果要避免重复文件名,只需生成一个唯一的代码并包含到文件名中即可。此外,您可以使用time()
函数向文件名添加时间戳,这将防止重复的文件名
$file_name = time() . "-" . $_FILES['image']['name'];
// output: "1615273926-filename.jpg"
如果要反转上述示例中文件名和时间戳的顺序,可以使用pathinfo()
函数。见:
$file_name_pathinfo = pathinfo($_FILES['image']['name']);
$file_name = $file_name_pathinfo['basename'] . "-" . time() . "." . $file_name_pathinfo['extension'];
// output: "filename-1615273926.jpg"
这样可以防止文件名重复
了解更多信息:
- 路径信息
:
time()
:尝试使用一些随机数
$file_name = ['image']['name'];
$random = rand(000,999);
$random = str_pad($random, 3, '0', STR_PAD_LEFT);
$imgname = $random.$file_name;
移动上传
move_uploaded_file($_FILES["userImage"]["tmp_name"], "uploaddirectory/" . $imgname);
若要检查文件是否存在,请将上述行置于条件检查中
if (file_exists("uploaddirectory/" . $imgname)
{
echo $imgname . " already exists. ";
die;
}
else
{
//do something
}
如果堆栈溢出告诉您不能发布问题,因为它有太多的代码和太少的文本来解释它,那么添加这样的伪文本不是一个好办法。你应该做的是添加更多的文本来解释这个问题。这些支票存在是有原因的,这是错误的。这将返回“imagename.jpg 1615274130”作为文件名。@William Carneiro感谢您指出。已更新代码。
。['image']['name']
将永远不会有值,并且将始终生成警告。