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

php多图上传重命名相同如何解决?

php多图上传重命名相同如何解决?

PHP
FFIVE 2019-03-17 17:48:25
<?php header("content-type:text/html;charset=utf-8"); include 'inc.php'; include 'mysql.fun.php'; session_start(); $uName=$_POST["uName"]; $uSex=$_POST["uSex"]; $uIntroduction=$_POST["uIntroduction"]; $uImg1=$_FILES["uImg1"]; $uImg2=$_FILES["uImg2"]; $uImg3=$_FILES["uImg3"]; //照片1 print_r($uImg1); $ext1=explode(".", $uImg1["name"]); $extName1=end($ext1); if($extName1!="jpg"&&$extName1!="gif"&&$extName1!="png"){ echo "文件错误<a href='index.php'>返回</a><br/>"; exit; } if($uImg1["size"]>5000000){ echo "照片太大了<a href'index.php'>返回</a><br/>"; exit; } $dir1="upload/"; @$fileName1=time().rand(10000.99999).".".$extName1; @$times1=date("Y-m-d H:i:s", time()) ; $Url1=$dir1.$fileName1; echo "照片1上传成功"; move_uploaded_file($uImg1["tmp_name"],$Url1); //照片2 print_r($uImg2); $ext2=explode(".", $uImg2["name"]); $extName2=end($ext2); if($extName2!="jpg"&&$extName2!="gif"&&$extName2!="png"){ echo "文件错误<a href='index.php'>返回</a><br/>"; exit; } if($uImg2["size"]>5000000){ echo "照片太大了<a href'index.php'>返回</a><br/>"; exit; } $dir2="upload/"; @$fileName2=md5(time().rand(10001.99998)).".".$extName2; @$times2=date("Y-m-d H:i:s", time()) ; $Url2=$dir2.$fileName2; echo "照片2上传成功"; move_uploaded_file($uImg2["tmp_name"],$Url2); //照片3 print_r($uImg3); $ext3=explode(".", $uImg3["name"]); $extName3=end($ext3); if($extName3!="jpg"&&$extName3!="gif"&&$extName3!="png"){ echo "文件错误<a href='index.php'>返回</a><br/>"; exit; } if($uImg3["size"]>5000000){ echo "照片太大了<a href'index.php'>返回</a><br/>"; exit; } $dir3="upload/"; @$fileName3=uniqid(time().rand(10002.99997)).".".$extName3; @$times3=date("Y-m-d H:i:s", time()) ; $Url3=$dir3.$fileName3; echo "照片3上传成功"; move_uploaded_file($uImg3["tmp_name"],$Url3); $sql="insert into content(uname, usex, uintroduction, uimg1, uimg2, uimg3, times)"; $sql.="values('{$uName}', '{$uSex}', '{$uIntroduction}', '{$fileName1}', '{$fileName2}', '{$fileName3}', '{$times}')"; query($sql); ?> 关于多图片上传的一些疑问,求大神给些思路。可以接收到上传图片的原文件名,上传后也可以区分图片的不同类型(如:JPG、PNG)等,可是图片的重命名却全是一样。当图片格式都是同一类型的时候,图片就完全错误了。最后突发奇想,为何用不同的加密方法加密一下。虽然目前可以正常的实现图片的区分,可还是感觉思路有些错误,希望大神给些建议。PS:个人猜测,文件名重复是不是因为三个图片都被转换成了Array,重命名Array ( [name] )的时候,因为三个图片全都是Array ( [name] )所以被覆盖掉了?
查看完整描述

4 回答

?
慕的地8271018

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

上传的文件保存到服务器上时不要使用文件的原名字进行保存,例如可以使用 uuid 来作为文件名保存,然后在数据库里对此文件记录文件保存到系统的名字为 uuid 的,同时记录文件的原名字,下载的时候 header 里返回文件原名字,但是用 uuid 的名字读取文件,这样下载时保存到用户本地的文件名还是上传时的文件名。

查看完整回答
反对 回复 2019-03-18
?
茅侃侃

TA贡献1842条经验 获得超21个赞

一般上传到服务器的文件名都是要经过hash处理的,类似md5(time().$filename.$salt)

查看完整回答
反对 回复 2019-03-18
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

图片的原名是用来看的,不是用来做系统存储的。所以相同这一点你就知道存放的时候,名字应该由你自己再起一个不重复的名字。

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 859 浏览

添加回答

举报

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