$_FILES 使用addslashes处理导致上传文件失败
2014-11-23 00:00
519 查看
在PHP处理文件上传的过程中,出现一种很怪异的情况,使用move_uploaded_file函数总是返回false,
一开始以为是自己写错了,就检查相关原因,后台发现是对$_FILES进行了addslashes处理,导致文件上传失败。
解决办法,取消对$_FILES直接对addslashes处理,可以改为对单个$_FILES[‘file’](举例说明可以是其他值)处理
addslashes函数的作用时什么呢?
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号 (‘)
双引号 (“)
反斜杠 (\)
NULL
该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。
以下在不同测试环境对$_FILES进行了addslashes处理的结果
1)Windows Server 2003 + IIS7+ php5.2
2)Windows7 + apache2.2 + php5.5
3)Mac OS X 10.10 + apache2.4.9 + php5.5.14
4)CentSOS6.5 X 10.10 + apache2 + php5.4
1),2)上传失败
3),4)上传成功
一开始以为是自己写错了,就检查相关原因,后台发现是对$_FILES进行了addslashes处理,导致文件上传失败。
解决办法,取消对$_FILES直接对addslashes处理,可以改为对单个$_FILES[‘file’](举例说明可以是其他值)处理
addslashes函数的作用时什么呢?
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号 (‘)
双引号 (“)
反斜杠 (\)
NULL
该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。
$magic_quotes = function_exists('get_magic_quotes_gpc') ? get_magic_quotes_gpc() : false; // 环境是否有过滤 if($Config['Filter']) { // 需要开启过滤 ( !$magic_quotes && (App::filter($_GET, 'addslashes') && App::filter($_POST, 'addslashes') && App::filter($_COOKIE, 'addslashes') ) ); } else { ( $magic_quotes && (App::filter($_GET, 'stripslashes') && App::filter($_POST, 'stripslashes') && App::filter($_COOKIE, 'stripslashes') ) ); }
以下在不同测试环境对$_FILES进行了addslashes处理的结果
1)Windows Server 2003 + IIS7+ php5.2
2)Windows7 + apache2.2 + php5.5
3)Mac OS X 10.10 + apache2.4.9 + php5.5.14
4)CentSOS6.5 X 10.10 + apache2 + php5.4
1),2)上传失败
3),4)上传成功
相关文章推荐
- Asp.Net Mvc使用Ajax.BeginForm上传文件Request.Files始终为empty
- php $_FILES处理文件上传
- tomcat的temp路径不存在, 导致上传文件失败
- struts2上传文件后 return SUCCESS失败的处理方法!
- xml布局文件里直接使用背景图导致爆内存的情况处理
- 使用multipart请求处理文件上传
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
- gitlab使用过程中遇到大文件上传或下载失败的问题,总结一下
- 使用multipart请求处理文件上传
- ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
- svn钩子程序上传文件中文文件导致报错的处理办法
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- 使用jquery uploadfy插件上传文件返回json格式的处理办法
- Yii使用ajax上传文件 EAjaxUpload: Uploading files using ajax (without flash)
- 使用FileUpload控件上传文件导致重启
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- StreamReader的缓冲区大小不够,导致上传的文件只处理了一部分
- node 进行文件上传时候setEncoding 导致上传文件失败
- 使用curl做上传文件处理(结合file服务)