TP框架多上傳域上傳圖片


問題:

學習使用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.            } 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM