<input type="file" name="keywords" size="30" />
<input type="file" name="images_src" size="30" />
if($_FILES['keywords']['name']!='' && $_FILES['keywords']['name']!=null){
$upload=new \Think\Upload();
$upload->maxSize=0;
$upload->autoSub=false;
$upload->rootPath='./Public/upfiles/'.MODULE_NAME.'/';
$textname=time().rand(100,999);
$upload->saveName=$textname;
$info=$upload->upload();
if(!$info){
echo '<script language="javascript">alert("'.$upload->getError().'");history.back(1);</script>';
exit();
}else{
$pathname=pathinfo($_FILES['keywords']['name'], PATHINFO_EXTENSION);
$name1=$textname.'.'.$pathname;
$model->keywords=MODULE_NAME.'/'.$name1;
}
}
if($_FILES['images_src']['name']!='' && $_FILES['images_src']['name']!=null){
$upload=new \Think\Upload();
$upload->maxSize=0;
$upload->autoSub=false;
$upload->exts=array('jpg','png','jpeg','gif','JPG','PNG','JPEG','GIF');
$upload->rootPath='./Public/upfiles/'.MODULE_NAME.'/';
$textname=time().rand(100,999);
$upload->saveName=$textname;
$info=$upload->upload();
if(!$info){
echo '<script language="javascript">alert("'.$upload->getError().'");history.back(1);</script>';
exit();
}else{
$pathname=pathinfo($_FILES['keywords']['name'], PATHINFO_EXTENSION);
$name2=$textname.'.'.$pathname;
$model->images_src=MODULE_NAME.'/'.$name2;
}
}
POST提交的$_FILES dump出来如下:array(2) {
["keywords"] => array(5) {
["name"] => string(7) "123.png"
["type"] => string(9) "image/png"
["tmp_name"] => string(14) "/tmp/phpfoHhcq"
["error"] => int(0)
["size"] => int(653076)
}
["images_src"] => array(5) {
["name"] => string(7) "222.jpg"
["type"] => string(10) "image/jpeg"
["tmp_name"] => string(14) "/tmp/phpL1M91V"
["error"] => int(0)
["size"] => int(148931)
}
}
最后数据库图片名没问题
比如第一张图片名称是56458793.jpg
第二张是321654258.png
但是上传的真实文件其名称都会变成第二个图的名称但是后缀名不变,如下:
321654258.jpg
321654258.png
导致第一张图显示不正常。。。
经检查如果上传不同格式的图
$upload=new \Think\Upload();
$upload->upload();
$upload->upload();出来的结果为空,会出现非法文件上传的报错。如果上传两张图都是相同格式,比如都是jpg,那么就不会出现这类问题。
请问这个是BUG吗?
最佳答案
