为了账号安全,请及时绑定邮箱和手机立即绑定

上传文件时判断是否存在相同名称文件代码问题

上传文件时判断是否存在相同名称文件代码问题

慕仔8661472 2016-07-31 22:30:48
if (move_uploaded_file($fileInfo['tmp_name'],$destination)) {  //判断文件名是否重名  if (file_exists($fileInfo['name'])) {    echo "<script language=\"JavaScript\">\r\n";    echo " alert(\"文件已存在请重命名后创建\");\r\n";    echo " history.back();\r\n";    echo "</script>";    exit;  }else{  echo "<script language=\"JavaScript\">\r\n";  echo " alert(\"文件上传成功\");\r\n";  echo " history.back();\r\n";  echo "</script>";  exit;}}点击上传还是会有提示框显示:文件已存在请重命名后创建 
查看完整描述

2 回答

?
龙一少爷

TA贡献2条经验 获得超4个赞

感觉一楼回答是有道理的,fileexist判断是需要去文件检索的,如果文件数量足够多,这样的算法就很不合理。可以采用时间戳+文件名合并的方法来重命名一下,然后保存,基本不会重名。

查看完整回答
反对 回复 2016-11-21
?
回夢

TA贡献18条经验 获得超5个赞

我觉得这种思路不好,为什么不直接想办法建立不同名的文件呢。

时间戳加上文件某些命名规则再加上MD5转化,基本就不会重名了。

相信百度也能搜出一堆方式。

如果检查重名,当你文件太多的时候怎么办?100W文件时你要检索多久,1E文件你又要检索多久?

查看完整回答
反对 回复 2016-08-02
  • 慕仔8661472
    慕仔8661472
    那还要考虑用户下载文件时,文件名总不能是一堆字母吧。
  • 慕仔8661472
    慕仔8661472
    我想了一种办法,不知道管用不 $uniName=$fileInfo['name']; $destination=$path.'/'.$uniName; $filenames1=scandir($path); if ($fileInfo['name']=foreach ($filenames1) { echo "<script language=\"JavaScript\">\r\n"; echo " alert(\"文件名已存在请重命名后重新上传\");\r\n"; echo " history.back();\r\n"; echo "</script>"; exit; }
  • 2 回答
  • 0 关注
  • 2307 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信