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