当前位置: 首页 > 知识库问答 >
问题:

使用FormData和jQuery上传Ajax大文件失败

邢焕
2023-03-14

我试图通过使用FormData通过AJAX上传文件。如果我提交AJAX调用而没有选择任何要上传的文件,post工作正常,服务器上接收到其他字段(不是文件上传)。但是,如果我选择一个要上传的文件,调用到达服务器时没有任何数据(在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);
            }
        });
    }
}
<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>

共有1个答案

邢和光
2023-03-14

我就知道这会是件蠢事!

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

 类似资料:
  • 这段javascript代码如下所示。注意,当file input元素的值发生变化时(即,一旦他们选择了要上传的文件),就会调用该命令 请原谅所有控制台日志。它的目的是显示输出和调试。 您将看到,我还附加了一个username字段,只是为了测试帖子是否在控制器中使用了一些完整的数据。的确是。以下是记录数组的输出: 有什么想法吗??

  • 本文向大家介绍ajax使用formdata上传文件流,包括了ajax使用formdata上传文件流的使用技巧和注意事项,需要的朋友参考一下 今天在做项目的时候涉及到了ajax上传文件流的问题,由于是移动端两个页面的两个表单使用同一个ajax地址进行上传数据给后台,数据中涉及到了不同类型的input,其中存在了file类型的input,导致无法使用表单序列化直接传输数据。 只存在传递一般的参数时,可

  • 本文向大家介绍jQuery Ajax使用FormData对象上传文件的方法,包括了jQuery Ajax使用FormData对象上传文件的方法的使用技巧和注意事项,需要的朋友参考一下 FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单"。 在 Mozilla Developer 网站 使用FormData对象 有详尽的FormDa

  • 问题内容: 我已经进行了很多搜索,以了解如何使用Ajax从表单上载文件,并发现xhr2应该可以做到。但是,我已经尝试过使用FormData对象,但它不起作用。 这是一个简单的html表单 这是“ post.php”文件,当以“老式”方式运行时,它可以正常工作: 这是“ upload.js” 您知道为什么它不起作用吗?控制台返回“未发送文件”。 非常感谢 ! 问题答案: 尝试替换代码: 有了这个:

  • 问题内容: 这是我使用拖放功能动态生成的HTML。 这是我的JavaScript代码: 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您使用 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通

  • 问题内容: 这是我使用拖放功能动态生成的html。 这是我的js代码… 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您提交常规表格一样 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通过P