TP框架多上传域上传图片

2018-06-22 04:53:34来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

问题:

学习使用TP框架做电商网站是,添加商品表单需要上传商品logo和商品图片pics,有两个上传域,第一个上传域是logo,只上传一张,第二个上传域是pics,上传多张图片。使用如下代码,总是报错:非法上传文件!

$upload = \Think\Upload;
$info=$upload->upload();

解决方法:

有多个上传域时,应如下使用upload方法,指定要处理的上传域:

$upload = \Think\Upload;
$info1 = $upload->upload(array('logo'=>$_FILES['logo']);
$info2 = $upload->upload(array('pics'=>$_FILES['pics']);

参考资料:

Title:

TP框架上传图片时报错“非法上传"处理

Content:

TP框架上传图片时报错“非法上传"处理,主要注意以下两点:

1.$_FILES中有多个上传域问题,所以针对不同的上传域,区别命名;

2.如同个上传域中有一些没有上传图片,则要重新收集好上传的信息(收集成非空的一维数组);

具体代码如下;

第一种情况:

if($this->_hasImg())  
02.                {  
03.                    // 只上传表单中name叫做jqimg的图片  
04.                    $info = $upload->upload(array('jqimg'=>$_FILES['jqimg']));  
05.                    if(!$info)  
06.                        redirect(U('Ad/Ad/save/id/'.$ad_id), 3, $upload->getError());  
07.                    // 循环每一张图片,插入到jq-info表  
08.                    foreach ($info as $k => $v)  
09.                    {  
10.                        $url = $v['savepath'] . $v['savename'];  
11.                        $this->execute("INSERT INTO sh_ad_jq_info(img_url,ad_link,ad_id) VALUES('$url','{$_POST['jqtxt'][$k]}',$ad_id)");  
12.                    }  
13.                }  
14.                // 处理修改的图片  
15.                if(isset($_POST['oldjqtxt']))  
16.                {  
17.                    // 先上传图片修改的图片  
18.                    $info = $upload->upload(array('oldjqimg'=>$_FILES['oldjqimg']));  
19.                    $_k = 0;  
20.                    foreach ($_POST['oldjqtxt'] as $k => $v)  
21.                    {  
22.                        // 有没有上传新图片  
23.                        if($info && isset($info[$_k]))  
24.                        {  
25.                            // 上传了新图片  
26.                            // 先删除原图  
27.                            $_ourl = $this->query('SELECT img_url FROM sh_ad_jq_info WHERE id = '.$k);  
28.                            @unlink(IMG_URL_HD . $_ourl[0]['img_url']);  
29.                            // 再更新为新图  
30.                            $_url = $info[$_k]['savepath'] . $info[$_k]['savename'];  
31.                            $this->execute("UPDATE sh_ad_jq_info SET ad_link='$v',img_url='$_url' WHERE id=$k");  
32.                        }  
33.                        else   
34.                        {  
35.                            $this->execute("UPDATE sh_ad_jq_info SET ad_link='$v' WHERE id=$k");  
36.                        }  
37.                        $_k++;  
38.                    }  
39.                }  
40.            }  

第二种情况:

foreach($_FILES['imgjq_url']['tmp_name'] as $k=>$v)  
02.            {  
03.  
04.                if($v)  
05.                {  
06.                    //删除原有硬盘图片  
07.                    $img_url = $this->query("SELECT imgjq_url FROM sh_ad_jq_info WHERE id = $k");  
08.  
09.                    @unlink(IMG_URL_HD .$img_url[0]['imgjq_url'] );  
10.  
11.  
12.                    //收集图片信息  
13.                    $arr = array();  
14.                    $arr['name'] = $_FILES['imgjq_url']['name'][$k];  
15.                    $arr['type'] = $_FILES['imgjq_url']['type'][$k];  
16.                    $arr['tmp_name'] = $_FILES['imgjq_url']['tmp_name'][$k];  
17.                    $arr['error'] = $_FILES['imgjq_url']['error'][$k];  
18.                    $arr['size'] = $_FILES['imgjq_url']['size'][$k];  
19.  
20.  
21.                    //上传图片处理  
22.                    $imgInfo = $upload->upload(array('imgjq_url' =>$arr ));  
23.  
24.                    if (!$imgInfo) {  
25.                        echo $upload->getError();die;  
26.                    }  
27.                      
28.                    $imgjq_url = $imgInfo['imgjq_url']['savepath'].$imgInfo['imgjq_url']['savename'];  
29.  
30.                    //更新到数据库  
31.                    $this->execute("UPDATE sh_ad_jq_info SET imgjq_url = '$imgjq_url' WHERE id = $k");  
32.  
33.                }  
34.            } 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ZendStudio13 PHP调试环境快速配置

下一篇:thinkphp验证码的实现