2

我正在使用 jQuery File Upload 插件将文件上传到 S3,出于某种原因,S3 总是认为我正在发送多个文件,而我不是。

$('#fileupload').fileupload({
    dataType: 'json',
    limitConcurrentUploads: 1,
    singleFileUploads: true,
    replaceFileInput: false,
    limitMultiFileUploads: 1,
    sequentialUploads: true,
    add: function(e, uploadData) {

        var file = {};
        file.id = 'randomstring';
        file.name = uploadData.files[0].name;
        $.ajax({
            type: 'post',
            url: /sign_files_path/,
            dataType: 'json',
            data: {'upload_filename': file.name, 'file_uploader_id': file.id },
            success: function(result, text) {
                if (result && result.amazon_request && result.post_url) {

                    uploadData.formData = result.amazon_request;
                    uploadData.url = result.post_url;
                    console.log(uploadData.files.length) // This always shows 1
                    console.log(uploadData)
                    uploadData.submit();
                }
            },
            error: function(xhr, status) {
            }
        });
    },
    progress: function(e, data) {
        // console.log(data)
    }
});

我从 S3 获得了有关将文件发送到何处以及何时调用提交的具体详细信息,但它不起作用。我已经设置了所有可以想象的配置选项并重新阅读了 5 次文档,但是每次我尝试上传时,我都会收到来自 S3 的 400 响应。

有人知道我可能会错过什么吗?

4

1 回答 1

1

终于想通了。因为它正在使用Flash uploader,我只需要比较两个POST请求,解决方案是双重的:

  1. 我需要将文件输入字段的名称更改为“文件”
  2. 添加另外 2 个在 S3 策略中定义的 POST 变量。
于 2012-11-07T20:52:15.560 回答