PHP-将文件上载到目录并将文件扩展名添加到底部时的随机文件名?

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

我使用php、html和java制作了一个uload系统,但我担心重复文件。如何使用随机名称保存并添加扩展名


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']
    将永远不会有值,并且将始终生成警告。