Javascript 拖放;通过jqueryajax上传的drop文件奇怪地受到文件大小的限制
我一直在编写通过jQueryAjax上传的文件。一切都很好,我试着上传大约大于4MB的文件。我错过了什么 事实如下:Javascript 拖放;通过jqueryajax上传的drop文件奇怪地受到文件大小的限制,javascript,jquery,jquery-file-upload,jqxhr,Javascript,Jquery,Jquery File Upload,Jqxhr,我一直在编写通过jQueryAjax上传的文件。一切都很好,我试着上传大约大于4MB的文件。我错过了什么 事实如下: php.ini-已选中(最大上载文件大小、最大执行时间等) 执行处理文件上载的服务器端脚本,但$\u POST和$\u文件为空 varfd似乎处理正确 jQuery的块: var x_upload = $(".x_upload"); x_upload.on('drop', function(e) { e.preventDefault(); var files =
$\u POST
和$\u文件
为空fd
似乎处理正确var x_upload = $(".x_upload");
x_upload.on('drop', function(e) {
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
handleFileUpload(files, x_upload);
});
function handleFileUpload(files, x_area) {
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
console.log(files[i]); //is OK
fd.appdend('type', 'image');
sendFileToServer(fd, x_area);
}
}
function sendFileToServer(formData, x_area) {
var uploadURL = "/api/upload.php";
var jqXHR = $.ajax({
xhr: function() {
var xhrobj = $.ajaxSettings.xhr();
if (xhrobj.upload) {
xhrobj.upload.addEventListener('progress', function(event) {
var percent = 0;
var position = event.loaded || event.position;
var total = event.total;
if (event.lengthComputable) {
percent = Math.ceil(position / total * 100);
}
//Set progress
x_area.find(".x_progress_num").text(percent);
}, false);
}
return xhrobj;
},
url: uploadURL,
type: "POST",
contentType: false,
processData: false,
cache: false,
data: formData,
success: function(data) {
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("AJAX Error " + errorThrown + " " + textStatus);
x_area.addClass('x_error');
}
});
}
var x_upload=$(“.x_upload”);
x_upload.on('drop',函数(e){
e、 预防默认值();
var files=e.originalEvent.dataTransfer.files;
handleFileUpload(文件、x_上传);
});
函数handleFileUpload(文件,x_区域){
对于(var i=0;i
简化的服务器端
<?php
var_dump($_POST); // is empty if file is >4 MB
var_dump($_FILES); // is empty if file is >4 MB
if (!isset($_POST['type'])) {
echo "empty type";
} else {
//echo "ok' only if file is ls <4MB
echo "ok";
}
我有上传的最大文件大小=200M
,但我忘了增加上传的最大文件大小(正如@Jonathan Lonowski指出的那样)。这解决了我的问题
但是,$\u FILES[“file”][“error”]>0
返回了FALSE
,以及$\u POST
返回了一个空数组(尽管该值是静态分配的)
多谢各位谜团已解开。您究竟检查了哪些php.ini设置?如果归咎于upload\u max\u filesize
,那么您应该在$\u FILES
中得到一个错误
条目。您是否检查过浏览器首先发送的数据(开发人员工具)?@JonathanLonowski是正确的。我已将上传的最大文件大小设置为200M,但我忘了增加post最大文件大小。我现在觉得自己很傻……“然而,我很惊讶[…]”——这是定义的行为:——这是有道理的,因为只给脚本一部分数据来处理当然不是替代方案,这将导致各种各样的麻烦。