【问题标题】:Blueimp file upload one request - files not being sentBlueimp 文件上传一个请求 - 文件未发送
【发布时间】:2014-03-26 19:42:08
【问题描述】:

我有一个表单,它允许在动态添加到表单的各个字段中上传文件。我正在使用 Blueimp 的 jQuery 文件上传插件。我正在尝试在一个请求中发送多个文件。我不希望发送多个请求。当我提交表单时,要上传的文件不包含在请求中。我在 add 方法的 filesList 数组中维护它们,并确保覆盖现有值。然后我使用发送选项发送文件。但是,它们不包含在 ajax 帖子中。我错过了什么?我在网上看到其他人试图做到这一点。但是,我还没有找到一个可靠的工作示例。以下是我的代码:

  var fileList = [],
    exists = false;

$form.fileupload({
    autoUpload: false,
    singleFileUpload: false,
    url: '/handler.php',
    add: function(e, data) {
        exists = false;
        for(var i = 0, len = filesList.length; i < len; i++) {
            if(filesList[i].paramName === data.paramName) {
                // file already exists for this param, replace it
                exists = true;
                filesList[i] = data;
                break;
            }
        }

        // no file exists for this param, add it to array
        if(!exists) {
            filesList.push(data);
        }

        $form.off('submit').one('submit', function(e) {
            $form.fileupload('send', {
                files: filesList
            });

            return false;
        });
    }
})

【问题讨论】:

    标签: jquery jquery-file-upload blueimp


    【解决方案1】:

    我认为您的问题是该选项是 singleFileUploads 带有 's'。

    来自documentation

    singleFileUploads

    默认情况下,选择的每个文件都是使用 XHR 类型上传的单独请求上传的。 将此选项设置为 false 以在每个请求中上传文件选择。

    注意:通过一个请求上传多个文件需要将 multipart 选项设置为 true(默认值)。

    类型:布尔值 默认值:真

    【讨论】:

      【解决方案2】:

      当您想提交带有附件的表单时,您必须调用data.submit() 函数。

      From the doc:

      在 data 参数上调用 submit 方法时开始上传。

      data.submit() 返回一个 Promise 对象并允许使用 jQuery 的 Deferred 回调附加其他处理程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 2019-03-13
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        相关资源
        最近更新 更多