Question:
When learning to use the TP framework to build an e-commerce website, when adding a product form, you need to upload product logos and product image pics. There are two upload domains. The first upload domain is the logo. Only one upload is uploaded, and the second one is uploaded. The domain is pics, upload multiple pictures. When using the following code, an error is always reported: Illegal file upload!
<span>$upload</span> =<span> \Think\Upload; </span><span>$info</span>=<span>$upload</span>->upload();
Solution:
When there are multiple upload domains, you should use the upload method as follows to specify the upload domain to be processed:
$upload = \Think\Upload; $info1 = $upload->upload(array('logo'=>$_FILES['logo']); $info2 = $upload->upload(array('pics'=>$_FILES['pics']);
Reference:
Title:
T P framework will report an error of "illegal upload" when uploading pictures
Content:
TP framework will report an error of "illegal upload" when uploading pictures. Pay attention to the following two points:
1. There are multiple upload domains in $_FILES problem, so different upload domains are named differently;
2. If there are some uploaded images in the same upload domain, the uploaded information must be collected again (collected into a non-empty one-dimensional array);
Specific code As follows;
First case:
<span>if</span>(<span>$this</span>-><span>_hasImg()) </span>02.<span> { </span>03. <span>//</span><span> 只上传表单中name叫做jqimg的图片 </span>04. <span>$info</span> = <span>$upload</span>->upload(<span>array</span>('jqimg'=><span>$_FILES</span>['jqimg'<span>])); </span>05. <span>if</span>(!<span>$info</span><span>) </span>06. redirect(U('Ad/Ad/save/id/'.<span>$ad_id</span>), 3, <span>$upload</span>-><span>getError()); </span>07. <span>//</span><span> 循环每一张图片,插入到jq-info表 </span>08. <span>foreach</span> (<span>$info</span><span>as</span><span>$k</span> => <span>$v</span><span>) </span>09.<span> { </span>10. <span>$url</span> = <span>$v</span>['savepath'] . <span>$v</span>['savename'<span>]; </span>11. <span>$this</span>->execute("INSERT INTO sh_ad_jq_info(img_url,ad_link,ad_id) VALUES('<span>$url</span>','{<span>$_POST</span>['jqtxt'][<span>$k</span>]}',<span>$ad_id</span>)"<span>); </span>12.<span> } </span>13.<span> } </span>14. <span>//</span><span> 处理修改的图片 </span>15. <span>if</span>(<span>isset</span>(<span>$_POST</span>['oldjqtxt'<span>])) </span>16.<span> { </span>17. <span>//</span><span> 先上传图片修改的图片 </span>18. <span>$info</span> = <span>$upload</span>->upload(<span>array</span>('oldjqimg'=><span>$_FILES</span>['oldjqimg'<span>])); </span>19. <span>$_k</span> = 0<span>; </span>20. <span>foreach</span> (<span>$_POST</span>['oldjqtxt'] <span>as</span><span>$k</span> => <span>$v</span><span>) </span>21.<span> { </span>22. <span>//</span><span> 有没有上传新图片 </span>23. <span>if</span>(<span>$info</span> && <span>isset</span>(<span>$info</span>[<span>$_k</span><span>])) </span>24.<span> { </span>25. <span>//</span><span> 上传了新图片 </span>26. <span>//</span><span> 先删除原图 </span>27. <span>$_ourl</span> = <span>$this</span>->query('SELECT img_url FROM sh_ad_jq_info WHERE id = '.<span>$k</span><span>); </span>28. @<span>unlink</span>(IMG_URL_HD . <span>$_ourl</span>[0]['img_url'<span>]); </span>29. <span>//</span><span> 再更新为新图 </span>30. <span>$_url</span> = <span>$info</span>[<span>$_k</span>]['savepath'] . <span>$info</span>[<span>$_k</span>]['savename'<span>]; </span>31. <span>$this</span>->execute("UPDATE sh_ad_jq_info SET ad_link='<span>$v</span>',img_url='<span>$_url</span>' WHERE id=<span>$k</span>"<span>); </span>32.<span> } </span>33. <span>else</span> 34.<span> { </span>35. <span>$this</span>->execute("UPDATE sh_ad_jq_info SET ad_link='<span>$v</span>' WHERE id=<span>$k</span>"<span>); </span>36.<span> } </span>37. <span>$_k</span>++<span>; </span>38.<span> } </span>39.<span> } </span>40. }
Second case:
<span>foreach</span>(<span>$_FILES</span>['imgjq_url']['tmp_name'] <span>as</span><span>$k</span>=><span>$v</span><span>) </span>02.<span> { </span>03. 04. <span>if</span>(<span>$v</span><span>) </span>05.<span> { </span>06. <span>//</span><span>删除原有硬盘图片 </span>07. <span>$img_url</span> = <span>$this</span>->query("SELECT imgjq_url FROM sh_ad_jq_info WHERE id = <span>$k</span>"<span>); </span>08. 09. @<span>unlink</span>(IMG_URL_HD .<span>$img_url</span>[0]['imgjq_url'<span>] ); </span>10. 11. 12. <span>//</span><span>收集图片信息 </span>13. <span>$arr</span> = <span>array</span><span>(); </span>14. <span>$arr</span>['name'] = <span>$_FILES</span>['imgjq_url']['name'][<span>$k</span><span>]; </span>15. <span>$arr</span>['type'] = <span>$_FILES</span>['imgjq_url']['type'][<span>$k</span><span>]; </span>16. <span>$arr</span>['tmp_name'] = <span>$_FILES</span>['imgjq_url']['tmp_name'][<span>$k</span><span>]; </span>17. <span>$arr</span>['error'] = <span>$_FILES</span>['imgjq_url']['error'][<span>$k</span><span>]; </span>18. <span>$arr</span>['size'] = <span>$_FILES</span>['imgjq_url']['size'][<span>$k</span><span>]; </span>19. 20. 21. <span>//</span><span>上传图片处理 </span>22. <span>$imgInfo</span> = <span>$upload</span>->upload(<span>array</span>('imgjq_url' =><span>$arr</span><span> )); </span>23. 24. <span>if</span> (!<span>$imgInfo</span><span>) { </span>25. <span>echo</span><span>$upload</span>->getError();<span>die</span><span>; </span>26.<span> } </span>27. 28. <span>$imgjq_url</span> = <span>$imgInfo</span>['imgjq_url']['savepath'].<span>$imgInfo</span>['imgjq_url']['savename'<span>]; </span>29. 30. <span>//</span><span>更新到数据库 </span>31. <span>$this</span>->execute("UPDATE sh_ad_jq_info SET imgjq_url = '<span>$imgjq_url</span>' WHERE id = <span>$k</span>"<span>); </span>32. 33.<span> } </span>34. }
The above has introduced the TP framework for multi-upload domain uploading of images in the Legend of Sword and Fairy 5 prequel branch, including the content of the Legend of Sword and Fairy 5 prequel branch. I hope it will be helpful to friends who are interested in PHP tutorials.