Загрузка больших файлов Ajax с FormData и jQuery не может опубликовать данные

Я пытаюсь загрузить файлы через AJAX, используя FormData. Если я отправляю вызов 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:

<form id="frmNewComment544" enctype="multipart/form-data" method="post" action="">
<div>
<textarea style="width:100%;" cols="30" rows="5" id="newnote_544"></textarea>
</div>
<div>
<input type="button" onclick="AddComment(544)" value="Append Comment">
</div>
<div class="attachment-browsers" id="attachmentBrowsers544" style="display: block;">Attachments will be uploaded when you append a comment.
<div>
<input type="file" id="upload_544_151ab3cfe69" name="upload_544_151ab3cfe69" class="upload-544">
</div>
<div>
<input type="file" id="upload_544_3y4afe6eg7a" name="upload_544_3y4afe6eg7a" class="upload-544">
</div>
</div>
</form>

Редактировать 2: ОК, проблема возникает только при загрузке относительно больших файлов (не больших — в данном случае это было 10 МБ). Небольшие файлы загружаются нормально. Итак, теперь вопрос в том, почему я не могу загрузить большие файлы, используя этот метод?

1

Решение

Я знал, что это будет что-то глупое!

У моего php.ini было ограничение по умолчанию в 2 МБ для загрузки файлов. D’о.

1

Другие решения

Я не вижу никакой ссылки на вашу форму.
Может быть, вы бы сделали это так:

.....

var form = $('form#frmNewComment544');

var formdata = false;

if (window.FormData){
formdata = new FormData(form[0]);
}

var formAction = form.attr('action');

$.ajax({
url: formAction,
data : formdata ? formdata : form.serialize(),

....
0

По вопросам рекламы [email protected]