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"/> 网络訪问权限; 布局文 ...
随机推荐
- DP练习(初级):ZigZag
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 类似于求最长子串的方法.dp[0 ...
- 02---CSS整理
一.概述 CSS(cascading style sheet) 层叠样式表 提供比HTML更强大的页面排版.美化工具 CSS将网页内容和显示样式进行分离,提高了显示 ...
- iOS开发——面试指导
iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...
- html5中viewport使用
html5中viewport使用 转载自:http://www.maoegg.com/the-usage-of-viewport-in-html5/ 用html5开发移动应用时往往会遇到手机的分辨率或 ...
- How to Map Distinct Value Types Using Java Generics--reference
原文:http://www.codeaffine.com/2015/03/04/map-distinct-value-types-using-java-generics/ Occasionally t ...
- 解决了jQuery插件未能导入到项目之中
Loading jQuery plugins from third-party scripts <script src="js/jquery.js" type="t ...
- [记录]calculate age based on date of birth
calculate age based on date of birth know one new webiste:eval.in run php code
- Navicate DataModel 注册码
注册信息: 姓 名:ttrar.com 组 织:(空) 序列号:NAVD-6CLM-6BKA-5TXK 内容来自: 可视化数据库设计工具(Navicat Data Modeler)1.0. ...
- iis7 php urlrewrite 并隐藏index.php
<rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> ...
- JavaScript入门(9)
一.Math对象 Math对象,提供对数据的数学计算 使用Math的属性和方法,代码如下: <script type="text/javascript"> var my ...