Blueimp文件上传一个请求 - 文件未被发送

时间:2014-03-26 19:42:09

标签: jquery jquery-file-upload blueimp

我有一个表单,允许在动态添加到表单的各个字段中上传文件。我正在使用Blueimp的jQuery文件上传插件。我正在尝试在一个请求中发送多个文件。我不希望发送多个请求。当我提交表单时,要上载的文件不包含在请求中。我将它们保存在add方法的filesList数组中,并确保覆盖现有值。然后我使用send选项发送文件。虽然,他们不包括在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;
        });
    }
})

2 个答案:

答案 0 :(得分:8)

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

来自documentation

singleFileUploads

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

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

输入:boolean 默认值:true

答案 1 :(得分:-1)

如果您要提交带有附件的表单,则必须调用data.submit()函数。

From the doc:

  

在数据参数上调用submit方法时,将开始上载。

     

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