我正在尝试使用FormData通过AJAX上传文件 . 如果我在没有选择要上传的文件的情况下提交AJAX调用,则帖子工作正常,并且在服务器上接收其他字段(不是文件上载) . 如果我选择要上传的文件,则调用到达服务器时没有任何数据(在PHP中,$ _POST和$ _FILES数组都是完全空的) . 我知道如果你没有告诉jQuery不设置contentType会发生这种情况,但是我将contentType和processData设置为false,它仍然不会发送数据 .
这是我的代码:
function AddComment(taskid) {
var newnote = $('#newnote_'+taskid).val();
if(newnote != '') {
$('#tasklist *').css('cursor', 'progress');
var formData = new FormData();
$('.upload-' + taskid).each(function() {
if (this.files[0]) {
formData.append($(this).attr('name'), this.files[0]);
}
});
formData.append("taskid", taskid);
formData.append("newnote", newnote);
$.ajax({
url: '/modules/task/ajax/ajaxAddComment.php',
data: formData,
processData: false,
contentType: false,
type: 'post',
success: function(data){
alert(data);
}
});
}
}
我确定我做的很蠢,但我看不出什么......?
编辑:这是HTML:
Attachments will be uploaded when you append a comment.
编辑2:好的,问题只发生在上传相对较大的文件时(不是很大 - 在这种情况下是10MB) . 小文件上传OK . 所以现在的问题是为什么我不能使用这种方法上传大文件?