thinkphp3.2.3 同时上传两种不同格式的文件会出错

浏览:427 发布日期:2018/05/24 分类:求助交流 关键字: Upload 文件上传 不同格式文件上传 thinkphp3.2.3
        
<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吗?
最佳答案
评论( 相关
后面还有条评论,点击查看>>