Php 使用FormData上传Ajax大型ish文件,jQuery无法发布数据

Php 使用FormData上传Ajax大型ish文件,jQuery无法发布数据,php,jquery,ajax,file-upload,form-data,Php,Jquery,Ajax,File Upload,Form Data,我正在尝试使用FormData通过AJAX上传文件。如果我提交AJAX调用而没有选择任何要上传的文件,那么post工作正常,服务器上会收到其他字段(不是文件上传)。但是,如果我选择了一个要上载的文件,那么调用将到达服务器,而没有任何数据(在PHP中,$\u POST和$\u FILES数组都是完全空的)。我知道如果您没有告诉jQuery不要设置contentType,可能会发生这种情况,但是我将contentType和processData设置为false,它仍然不会发送数据 这是我的密码: f

我正在尝试使用FormData通过AJAX上传文件。如果我提交AJAX调用而没有选择任何要上传的文件,那么post工作正常,服务器上会收到其他字段(不是文件上传)。但是,如果我选择了一个要上载的文件,那么调用将到达服务器,而没有任何数据(在PHP中,$\u POST和$\u 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:好的,问题只发生在上传相对较大的文件时(不是大文件,在本例中是10MB)。小文件上传OK。所以现在的问题是为什么我不能用这种方法上传大文件?

我看不到任何对您表单的引用。 也许你会这样做:

.....

      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(),

....

我就知道这会很愚蠢


我的php.ini文件上传的默认限制为2MB。哦。

你也可以发布
html
表单吗?请使用console.log()检查所有参数,并检查任何获取失败都可能导致post数据发送失败。谢谢,我尝试在构造函数中传递表单而不是附加数据,但结果是一样的。我发现你已经更新了你的问题。这是你原来的问题。我确实编辑了我的问题来发布表单HTML,但是,代码适用于小文件,而不是大文件(10MB)。因此,我认为代码本身没有任何问题,我只是达到了某种极限(但我不知道是什么)。我认为您比我更了解“php.ini”中的“max_file_size”。我还看到您正在上载多个文件。当文件很小时,您可以上载所有文件吗?如果您将PHP作为apache模块运行,则需要在对PHP.ini的更改生效之前重新启动apache。还要确保文件上传处于打开状态,并且您的post_max_大小至少与upload_max_filesize相同