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"/> 网络訪问权限; 布局文 ...
随机推荐
- 《RESTful Web Services》第二章 识别资源
引言:开放RESTful Web服务的首要步骤之一是设计资源模型. 2.1 如何从领域名词中识别资源 2.2 如何选择资源粒度 一些因素会影响数据库表和对象模型的设计,例如领域建模.需要高 ...
- 隐式Intent实例
注意:The <strong>categories</strong>, if supplied, must <em>all</em> be listed ...
- mysql中不同事务隔离级别下数据的显示效果--转载
事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...
- Java设计模式09:单例模式的强化(控制实例个数n)
1. 单例模式的本质: 控制实例数目(目的节约资源) 2. 单例模式体现的一些思想: (1)延迟装载(Lazy Load):懒汉式 (2)缓存:饿汉式 3. 单例模式的变形使用: 控制使用实例个数为3 ...
- GitHub帮助文档翻译1——helloWorld
工欲善其事必先利其器 ,都不知道 GitHub到底是什么,还怎么玩?因为总是会读了第一句就忘了下一句,形成不了感觉,所以希望把读GitHub的帮助文档都翻译出来,总是看大段大段的东西,谁都会懵圈的.希 ...
- JavaScript总结2--函数
一.定义函数 在js中,函数也是对象,能赋值给变量,能当作参数,可以设置属性,和调用他拥有的方法.函数的toString()方法,会返回他完整的函数内容.他有两个定义方法,函数表达式和函数声明.当一个 ...
- linux命令 --> cd命令
关于linux的命令这里进行简单的说明一下(简单的说明哦!!) 对于linux和windows基本的操作就是切换目录,因为只有进入目录时,才能看到里面的内容(对于linux这说的不太准确必定还有ls呢 ...
- 关于新feature对应的增加一个新的测试单子(QA)和文档单子(Doucmentation)的步骤
一,增加一个new feature的文档单子. 1.new feature 增加对应的文档单子(公司有一个组是专门写产品说明的)所以增加一个新的功能就要有这个新的功能对应的一个文档(Documenta ...
- 用js实现跳转提示页面
效果图: 网页布局 <p>操作成功</p> <strong>5</strong><span>秒后回到主页</span><a ...
- JDBC的几个步骤
JDBC:JAVA访问数据库的解决方案.几个步骤:1.加载驱动类; 2.与数据库建立连接: 3.执行SQL语句 4.处理结果集 5.关闭连接1. 第一步:加载驱动类: 需要注意:不 ...