Ajax上传文件:$_FILES为空,但在请求头中存在文件
Ajax Upload File: $_FILES is empty but files exists in request header
当用户在页面上掉落文件时,我使用formdata上传文件。一切工作在客户端和文件细节存在于请求头,但当我print_r($_FILES),它返回一个空数组。没有设置服务器端限制。我通过手动上传文件进行了测试。
请求详情:https://www.dropbox.com/s/tfta4ulqlxsaism/csz.PNG
js代码:$('html').live('drop', function(e)
{
try
{
e.stopPropagation();
e.preventDefault();
var files = e.originalEvent.dataTransfer.files || e.target.file || e.dataTransfer.files;
var file;
var len = files.length;
var i =0;
var formdata = new FormData();
for ( ; i < len; i++ ) {
file = files[i];
if ( window.FileReader ) {
reader = new FileReader();
reader.onloadend = function (e) {
$('html').removeClass('hover');
};
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("files[]", file);
}
}
if (formdata)
{
$.ajax({
url: base_url+"/kh/site/file/upld",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success : function(res){
console.log(res);
},
error: function(res){
console.log(res);
}
});
}
return false;
}catch(a){console.log(a.message);}
});
PHP代码:
<?php print_r($_FILES); ?>
我错过了什么?
提前感谢!
我遇到了完全相同的问题,结果证明这不是AJAX错误。当涉及到PHP时,上传不仅受到upload_max_filesize
的限制。在服务器上配置上传参数时,请考虑以下ini:
max_execution_time
:如果你将upload_max_filesize
设置为100mb,并且脚本的max_execution_time为5秒,服务器很可能返回404或500。
max_input_time
:你希望这个值足够高,以便完成完整的上传,具体取决于upload_max_filesize
。现在的互联网连接有很大的下载带宽,但上传却成问题。
post_max_size
:根据定义,一个上传进程是一个$_POST请求,所以如果upload_max_filesize
的值是100mb,那么post_max_size
的值不能更低。嗯,实际上你可以,但是当上传时,如果总上传大小介于post_max_size
和upload_max_filesize
之间,$_FILES将仍然为空。
原因有二你需要一次追加1个文件
formData.append( 'fileName', fileData);
fileName[] -- will not work
增加现金:假
$.ajax({
type: "POST",
url: url,
data:formData,
**cache: false,**
contentType: false,
processData: false
也可以有错误的配置dropZoneDropzone.options.myAwesomeDropzone = {
url: "post_ad.php",
method: "post",
**enctype:"multipart/form-data",**
paramName: "files",
addRemoveLinks: true,
autoProcessQueue: false,
**uploadMultiple: true,**
parallelUploads: 100,
相关文章:
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 显示IIS上javascript文件(SOAP请求)的XML响应
- Ajax调用返回当前html页面,而不是请求的文件
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- YUI向json文件发出ajax请求
- 在PHP中检测AJAX请求来自哪个文件
- 需要帮助处理XML HTTP文件上载请求
- 使用CloudFront和AmazonS3,或者其他CDN,我可以将所有类似的请求发送到一个静态文件中
- 在同一主机上对PHP文件使用XMLHTTP请求的Javascript违反了同源策略
- 在ajax请求后重新呈现EJS文件
- Laravel&Dropzone.js文件请求
- 获取请求JS文件的网站的域
- 如何在Liferay serveResource(-,-)方法中从AJAX请求下载文件
- JSON请求返回.txt文件
- 正在删除配置文件请求
- 包含和条件与传统的多文件请求
- XMLHttpRequest发送文件请求对于大文件给出404错误
- 从一个页面上的多个文件请求数据