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. }
TP框架多上传域上传图片的更多相关文章
- tp框架-----文件上传
之前也做过文件上传,现在学了tp,用tp怎么做呢? 第一步:做一个Wenjian控制器: <?php namespace Ceshi\Controller; use Think\Controll ...
- tp 框架 -文件上传
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?ph ...
- ssh框架文件上传下载
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 第二百七十三节,Tornado框架-文件上传
Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...
- TP框架在做上传时候提示:没有上传的文件!
这个一般是由于上传的文件超过了php.ini里面的限制.修改一下参数就行了 具体,打开php.ini 文件 搜索post_max_size upload_max_filesize 改一个比较大的, ...
- laravel框架图片上传
1.建控制器方法 2.建立路由 绑定控制器方法 3.进行图片上传的配置 修改图片上传的路径 a) config/filesystems.php 修改disks->local->root(图 ...
- layui框架图片上传至服务器
注意:只可用于数据量较小的项目,数据量庞大的项目不要用这个,否则会造成图片数量庞大,至服务器运行速度变慢或瘫痪 HTML代码 //前端使用的是layui框架<div class="la ...
- 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程
使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...
- Android采取async框架文件上传
页面效果 须要的权限 <uses-permission android:name="android.permission.INTERNET"/> 网络訪问权限; 布局文 ...
随机推荐
- zookeeper配置同步zookeeper编程
分布式助手Zookeeper(四) kissyoudyb 2013-12-05 17:41 阅读:33 评论:0 分布式助手Zookeeper(三) kissyoudyb 2013-12-05 ...
- [Javascript + lodash] sortBy and sortedIndex
sortBy: var collection = ['John', 'Petteri', 'Antti', 'Joonas', 'Zhentian']; var sorted = _.sortBy(c ...
- [008]C---gcc环境下的一个编译器版本问题
最开始纯粹为了好玩,写了这样一段程序: ; i < ; i++); 然后欢乐的运行: gcc practise.c -o practise 我擦咧,出现了这个: practise.c:: err ...
- Ambiguous mapping found. Cannot map 'xxxxController' bean method
1.背景 今天要做一个demo,从github上clone一个springmvc mybatis的工程(https://github.com/komamitsu/Spring-MVC-sample-u ...
- 如何将java代码生成一个bat文件
java -cp classes;lib/* beans.FileUpload 列出所要带的参数,用空格分开Pause
- 简单改写SQL达到优化目的
select * from (select t.row_id, t.supplier_name, t.tel, address, t.contact, t.contact_post, t.contac ...
- chosen 下拉框
$("#teams").trigger("liszt:updated");//更新重新绑定 $(" ...
- 在eclipse中运行storm-starter
开源软件官网提供的demo无疑是学习开源软件的最好的最原始的样例. 在Storm官网里下载apache-storm-0.9.6.zip,里面\examples\storm-starter\src\jv ...
- 最小生成树------Prim算法
定义:设G=(V,E)是一个无向连通图.如果G的生成子图T=(V,E’)是一棵树,则称T是G的一棵生成树(Spanning Tree). 应用生成树可以得到关于一个电网的一组独立的回路方程.第一步是要 ...
- Log4net - 规则简介(续)
之前对于配置并没有结束, 中间插了一个demo进去, 能够更直观的看到日志是怎么使用的. 这一篇, 我加了一些自己的东西进去, 可以更直观的来理解这些配置内容. 这里就继续介绍配置文件中的内容. 1. ...