问题:

学习使用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.            } 

转载于:https://www.cnblogs.com/liuyun90/p/5695540.html

TP框架多上传域上传图片相关推荐

  1. tp框架文件上传七牛服务器,TP5开发 - 七牛云图片上传方法

    1.config.php配置文件里配置七牛云密钥等 里面 secretKey accessKey domain bucket对应换成自己七牛云申请的, 步骤: (1)七牛云注册成功后-对象存储申请10 ...

  2. tp5 接收图片_TP5框架实现上传多张图片的方法分析

    本文实例讲述了TP5框架实现上传多张图片的方法.分享给大家供大家参考,具体如下: 1.效果图(每点击一次'添加选项',就会有一个新的 file 框来添加新的图片) 2.view 添加 $(" ...

  3. tp5多图上传php,TP5框架实现上传多张图片的方法分析

    本文实例讲述了tp5框架实现上传多张图片的方法.分享给大家供大家参考,具体如下: 1.效果图(每点击一次'添加选项',就会有一个新的 file 框来添加新的图片) 2.view 添加 $(" ...

  4. 19、HTML文件上传域

    文件上传是网站中一种常见的功能.例如百度网盘.QQ 邮箱以及有道云笔记都可以实现文件的上传.在 HTML 中,把 <input> 标签的 type 属性设置为 file 就可以实现上传文件 ...

  5. 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。

    在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...

  6. 解决使用elementUI框架el-upload上传组件时session丢失问题

    解决使用elementUI框架el-upload上传组件时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload上传组件时session丢失问题 (2)https: ...

  7. HTML5文件上传域的小例子

    先上图 文件上传进度条.获取上传的文件信息.读取图片绑定到img元素之类的 代码 <!DOCTYPE html><html> <head><meta char ...

  8. 华为云 对象存储服务 OBS 上传文件 上传图片 PHP Laravel

    语言:php 框架:laravel 简介:将项目上所有的 图片.pdf文件.视频等上传到华为云 并获取到华为云的文件地址进行访问 准备工作 composer准备 1.composer.json里添加需 ...

  9. OCR身份证实名认证+图片上传+拍照上传图片(自用)

    chooseImage() {const that = this;Taro.chooseImage({sizeType: ["original", "compressed ...

最新文章

  1. LeetCode简单题之检查字符串是否为数组前缀
  2. labview如何进行串口通讯
  3. 计算机设置从光盘启动怎么办,设置BIOS从光盘启动教程
  4. Spring 事务基于注解和xml方式
  5. SAP Business Application Studio 如何同 SAP BTP CloudFoundry 环境绑定
  6. axure选中后横线切换_Axure8.0|动态面板内容简单切换技巧
  7. 【今日CS 视觉论文速览】31 Dec 2018
  8. MyEclipse设置代码自动补全,及取消空格和‘=’补全
  9. 002.AngularJs调用Restful实现CRUD
  10. java类型之间的转换_java类型之间的转换
  11. php没有输出报错信息的解决
  12. 循环队列 代码实现(FIFO)
  13. eclipse快速导包快捷键_【IntelliJ IDEA mac新手入门】IDEA如何快速搭建Java开发环境...
  14. CTF攻防世界刷题51-
  15. 评测了10款画流程图软件,这4款最好用!(完全免费)
  16. hdu_5145_NPY and girls(莫队算法+组合)
  17. appium ios端自动化测试配置
  18. 威尔特拉斯定理_什么是数学 (R·柯朗 H·罗宾 著)
  19. DirectX9.0 DirectxSDK下载 DirectX9.03D游戏开发编程基础PDF+源代码
  20. 【matplotlib】图片的各种渲染效果;matplotlib.cm

热门文章

  1. 应该怎么样学习前端呢?
  2. 前端工作、学习中常用工具推荐
  3. c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
  4. hexo需要先编辑好html文件吗,教你定制Hexo的landscape打造自己的主题_html/css_WEB-ITnose...
  5. python如何使用字典中的值并进行比较_比较字典python中的值
  6. php下的ssm模式,编码风格:Mvc模式下SSM环境,代码分层管理
  7. nor flash驱动编写步骤
  8. Python风格总结:面向对象
  9. 【C#】读取Excel中嵌套的Json对象,Json带斜杠的问题(其三)
  10. 你真的需要 @DirtiesContext?