当用户在页面上删除文件时,我使用formdata上传文件。在客户端一切正常,文件详细信息存在于Request标头中,但是当我打印__($ _ 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); ?>
我缺少什么?
提前致谢!
答案 0 :(得分:1)
我遇到了完全相同的问题,事实证明这不是AJAX错误。说到PHP,上传仅限于upload_max_filesize
。在服务器上配置上传参数时,请考虑以下内容:
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
和{{1}}之间,则$ _FILES仍为空。
答案 1 :(得分:-1)
2个原因 你需要一次附加1个文件
formData.append( 'fileName', fileData);
fileName[] -- will not work
添加现金:假
$.ajax({
type: "POST",
url: url,
data:formData,
**cache: false,**
contentType: false,
processData: false
你也可能有错误的dropZone配置 Dropzone.options.myAwesomeDropzone = {
url: "post_ad.php",
method: "post",
**enctype:"multipart/form-data",**
paramName: "files",
addRemoveLinks: true,
autoProcessQueue: false,
**uploadMultiple: true,**
parallelUploads: 100,