jQuery文件直接上传到S3

时间:2012-11-07 09:32:51

标签: jquery-plugins file-upload amazon-s3

我正在使用jQuery文件上传插件将文件上传到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响应。

任何人都有任何想法,我可能会失踪?

1 个答案:

答案 0 :(得分:1)

终于明白了。由于它与Flash uploader合作,我只需要比较两个POST请求,解决方案是双重的:

  1. 我需要将文件输入字段的名称更改为“file”
  2. 再添加2个POST变量,这些变量在S3策略中定义。