问题:

学习使用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框架多上传域上传图片的更多相关文章

  1. tp框架-----文件上传

    之前也做过文件上传,现在学了tp,用tp怎么做呢? 第一步:做一个Wenjian控制器: <?php namespace Ceshi\Controller; use Think\Controll ...

  2. 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 ...

  3. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 第二百七十三节,Tornado框架-文件上传

    Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...

  5. TP框架在做上传时候提示:没有上传的文件!

      这个一般是由于上传的文件超过了php.ini里面的限制.修改一下参数就行了 具体,打开php.ini 文件 搜索post_max_size upload_max_filesize 改一个比较大的, ...

  6. laravel框架图片上传

    1.建控制器方法 2.建立路由 绑定控制器方法 3.进行图片上传的配置 修改图片上传的路径 a) config/filesystems.php 修改disks->local->root(图 ...

  7. layui框架图片上传至服务器

    注意:只可用于数据量较小的项目,数据量庞大的项目不要用这个,否则会造成图片数量庞大,至服务器运行速度变慢或瘫痪 HTML代码 //前端使用的是layui框架<div class="la ...

  8. 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程

    使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...

  9. Android采取async框架文件上传

    页面效果 须要的权限 <uses-permission android:name="android.permission.INTERNET"/> 网络訪问权限; 布局文 ...

随机推荐

  1. POJ_1365_Prime_Land

    //懒得解释 #include <iostream> #include <cstring> #include <cmath> #include <cstdio ...

  2. [AngularJS] Transclude -- using what existing in DOM to replace the template elements in directive

    var app = angular.module("phoneApp", []); app.controller("AppCtrl", function($sc ...

  3. 乐视mysql面试题

      http://blog.itpub.net/28916011/viewspace-2093197/ 最近,朋友去乐视面试了mysql DBA,以下是我据整理的乐视mysql面试题答案,供大家参考 ...

  4. Linux下用dump实现备份和还原 ux下用dump实现备份和还原

    对于系统而言,我们可以有很多种办法去备份(还原)系统或文件,之所以要去做备份,就是为了在系统或文件遭到损害时,能及时恢复,把损失减小到最小.当然,对于企业服务器而言,备份的重要性是举足轻重.咱们今天就 ...

  5. 可视化swing界面编辑--转载

    原文地址:http://279234058.iteye.com/blog/2200122 今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像V ...

  6. C# 之 用NPOI类库操作Excel

    1.需引用以下命名空间: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HPSF; using NPOI.HSSF.Ut ...

  7. javascript笔记04:let语句 和 yield语句 和 with语句

    1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...

  8. 由strupr,strlwr体会如果将字符常量转换为变量进行修改,体会常量的静态存储

    #include <stdio.h> #include <string.h> int main() { char s[]="Copywrite 1999-2000 G ...

  9. Lucene全文检索系列(一)

    1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...

  10. Objective-C,复合类,Composition

     复合类 5.复合类现实中,复杂的对象都是由较小和较为简单的对象构成:由简单对象创建复杂对象的过程称作合成.合成通常使用在有has-a关系的对象:通常的基本数据类型可以满足构造简单和小的对象.为了从小 ...