欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-14 22:49:53
...
问题:

学习使用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教程有兴趣的朋友有所帮助。