当前位置:Gxlcms > PHP教程 > 仙剑奇侠传5前传支线TP框架多上传域上传图片

仙剑奇侠传5前传支线TP框架多上传域上传图片

时间:2021-07-01 10:21:17 帮助过: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 ($infoas$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.            } 

以上就介绍了仙剑奇侠传5前传支线 TP框架多上传域上传图片,包括了仙剑奇侠传5前传支线方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行