找到上传文件类,ThinkPHP/Library/Think/Upload.class.php,找到dealFiles方法

/**

* 转换上传文件数组变量为正确的方式

* @access private

* @param array $files 上传的文件变量

* @return array

*/

private function dealFiles($files) {

$fileArray = array();

$n = 0;

foreach ($files as $key=>$file){

if(is_array($file['name'])) {

$keys = array_keys($file);

$count = count($file['name']);

for ($i=0; $i

分析到这个方法处理文件是有问题的。上传多个文件时,传入$files 的值为

array(5) {

["name"]=>

array(4) {

[0]=>

string(9) "组 1.png"

[1]=>

string(9) "组 2.png"

[2]=>

string(9) "组 3.png"

[3]=>

string(0) ""

}

["type"]=>

array(4) {

[0]=>

string(9) "image/png"

[1]=>

string(9) "image/png"

[2]=>

string(9) "image/png"

[3]=>

string(0) ""

}

["tmp_name"]=>

array(4) {

[0]=>

string(25) "C:\wamp64\tmp\phpE05E.tmp"

[1]=>

string(25) "C:\wamp64\tmp\phpE06F.tmp"

[2]=>

string(25) "C:\wamp64\tmp\phpE07F.tmp"

[3]=>

string(0) ""

}

["error"]=>

array(4) {

[0]=>

int(0)

[1]=>

int(0)

[2]=>

int(0)

[3]=>

int(4)

}

["size"]=>

array(4) {

[0]=>

int(19604)

[1]=>

int(28297)

[2]=>

int(35891)

[3]=>

int(0)

}

}

按道理来说此处应该是将这个数据处理成如下形式:

array(4) {

[0]=>

array(5) {

["name"]=>

string(9) "组 1.png"

["type"]=>

string(9) "image/png"

["tmp_name"]=>

string(25) "C:\wamp64\tmp\php9212.tmp"

["error"]=>

int(0)

["size"]=>

int(19604)

}

[1]=>

array(5) {

["name"]=>

string(9) "组 2.png"

["type"]=>

string(9) "image/png"

["tmp_name"]=>

string(25) "C:\wamp64\tmp\php9213.tmp"

["error"]=>

int(0)

["size"]=>

int(28297)

}

[2]=>

array(5) {

["name"]=>

string(9) "组 3.png"

["type"]=>

string(9) "image/png"

["tmp_name"]=>

string(25) "C:\wamp64\tmp\php9223.tmp"

["error"]=>

int(0)

["size"]=>

int(35891)

}

[3]=>

array(5) {

["name"]=>

string(0) ""

["type"]=>

string(0) ""

["tmp_name"]=>

string(0) ""

["error"]=>

int(4)

["size"]=>

int(0)

}

}

仔细分析此方法,并且修改这个方法如下,可修复“非法上传文件!”这个错误:

private function dealFiles($files) {

$fileArray = array();

$n = 0;

if(is_array($files['name'])) {

$keys = array_keys($files);

foreach ($files['name'] as $key => $value) {

foreach ($keys as $_key){

$fileArray[$n][$_key] = $files[$_key][$key];

}

$n++;

}

}else{

$fileArray = $files; // 单个文件上传

}

return $fileArray;

}

php文件上传非法,ThinkPHP 3.2.3 版本上传文件出现“非法上传文件!”错误解决办法...相关推荐

  1. ftp服务器上的文件发生错误450,FTP常见错误解决办法

    一般来说,只要网站能访问,FTP就应该能连接的,之前好长一段时间一直遇到连接不上香港主机的问题,还以为是宽带出口线路不好,原来是自己学识浅薄,在同事的指点下才明白所以然,下面总结一下FTP连接中的常见 ...

  2. Linux上 Can‘t connect to X11 window server using XX as the value of the DISPLAY 错误解决方法

    Linux上 Can't connect to X11 window server using XX as the value of the DISPLAY 错误解决方法 参考文章: (1)Linux ...

  3. SQL安装时出现挂起的文件操作”错误解决办法

    SQL安装时出现"以前的某个程序安装已在安装计算机上创建挂起的文件操作--"错误解决办法 打开注册表编辑器(或在命令行输入:regedit),在HKEY_LOCAL_MACHINE ...

  4. 服务器上 type=Internal Server Error, status=500 错误解决办法

    服务器上 type=Internal Server Error, status=500 错误解决办法 原本在环境上好好的,但是隔了一个下午却出现了500的错误,排查了很久,一开始还以为是我自己的配置文 ...

  5. SQL Server 安装文件挂起错误解决办法

    SQL Server 安装文件挂起错误解决办法 刚开始使用SQL Server 2000,就给了我一个下马威.不过最终还是解决了.具体情况和解决方法: 安装SQL Server 2000的操作系统是W ...

  6. 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?错误解决办法

    VS中出现是否忘记了向源中添加"#include "stdafx.h""?的错误解决办法 经常在用VS来写项目时,会出现这一问题. 在经过相关资料的查阅之后,发 ...

  7. python读取文件错误解决办法

    'gbk' codec can't decode byte 0xa9 in position 14: illegal multibyte sequence的解决办法 python在读取txt文件时,全 ...

  8. 上传文件报413 Request Entity Too Large错误解决办法

    产生这种原因是因为服务器限制了上传大小 1.nginx服务器的解决办法 修改nginx.conf的值就可以解决了 将以下代码粘贴到nginx.conf内 client_max_body_size 20 ...

  9. 使用git上传工程出现fatal:Unable to create ‘/xxx/xxx/xxx/.git/index.lock‘:File exists的解决办法

    git上传工程出现fatal:Unable to create '/xxx/xxx/xxx/.git/index.lock':File exists的原因及解决方法 先说解决办法 再来说说原因 官方说 ...

  10. Kindeditor上传本地图片成功后不回显,弹出层也不关闭,解决办法

    一. 只要本地上传,不要网络图片,的方法:把kindeditor一个image.js中 allowImageRemote = K.undef(self.allowImageRemote, true) ...

最新文章

  1. D3ctf-D3MUG(u3d
  2. angle-class
  3. 用SqlBulkCopy批量安插数据时提示来自数据源的 String 类型的给定值不能转换为指定目标列的类型 int...
  4. static的用法及其与auto的区别小结
  5. MYSQL中的BlackHole引擎
  6. linux I/O 栈 预习(上)
  7. Filter过滤器~~~编码过滤和登陆验证
  8. linux 无法mkdir文件夹,linux 不能mkdir了
  9. CCF NOI1027 数字之和
  10. 七种实用地方微信推广方法,三个月7000粉丝的秘诀
  11. 运用正则表达式在Asp中过滤Html标签代码的四种不同方法
  12. Oracle 10g 手工创建一个最简单的数据库
  13. 谷歌金山词霸最终版下载地址公布
  14. 【Mybatis】TKMybatis 介绍和使用
  15. 2021-CSP-J2/S2 自我题解
  16. Java线程状态RUNNABLE详解
  17. 理解Mybatis一级缓存,以及如何真正使用到一级缓存
  18. 安装Android adb驱动
  19. ra寄存器定位core
  20. 奈何桥上经过的地方,看醒了多少人

热门文章

  1. python删除特定的几行数据_Python:分成几行,并根据搜索删除特定行 - python
  2. exists查询慢_我大意了!这些问题让我的MySQL慢了十倍。
  3. 在vs.net实现向导式窗口_萨满佳作赏析 | 精神世界,灵魂向导,力量动物(1)...
  4. 信息服务器 iis 7.0,iis7.0的技术参数汇总
  5. 鸿蒙眼镜怎么样,Babiators儿童太阳镜怎么样 Babiators儿童太阳镜测评
  6. C语言中未显示声明函数返回值的类型
  7. android中的饱和机制,Android事件分发机制收藏这一篇就够了,通用流行框架大全...
  8. c语言十进制小数转其他进制,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...
  9. java 日期for循环_java for循环的时候增加循环体的长度是不是不太好的?
  10. python中如何获取类的属性,python – 获取类的属性