Ajax large-ish file upload with FormData and jQuery fails to post the data
我正在尝试使用formdata通过Ajax上传文件。如果我提交Ajax调用而不选择要上载的任何文件,那么日志工作正常,并且服务器上接收到其他字段(不是文件上载)。但是,如果我选择要上载的文件,那么调用将在没有任何数据的情况下到达服务器(在PHP中,$u post和$u files数组都是完全空的)。我知道如果您未能告诉jquery不要设置ContentType,就会发生这种情况,但是我将ContentType和ProcessData设置为false,它仍然不会发送数据。
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <form id="frmNewComment544" enctype="multipart/form-data" method="post" action=""> <textarea style="width:100%;" cols="30" rows="5" id="newnote_544"></textarea> <input type="button" onclick="AddComment(544)" value="Append Comment"> Attachments will be uploaded when you append a comment. <input type="file" id="upload_544_151ab3cfe69" name="upload_544_151ab3cfe69" class="upload-544"> <input type="file" id="upload_544_3y4afe6eg7a" name="upload_544_3y4afe6eg7a" class="upload-544"> </form> |
编辑2:好的,这个问题只发生在上传相对大的文件时(不是大文件——在本例中是10MB)。小文件上传正常。所以现在的问题是为什么我不能用这个方法上传大文件?
我知道这会是愚蠢的事!
我的php.ini对文件上传有默认的2MB限制。哦。
我看不到你的表格。也许你会这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ..... 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(), .... |