将分块文件直接上传到Amazon s3

时间:2016-03-11 18:30:29

标签: javascript jquery amazon-s3 plupload chunking

我正在寻找直接上传到亚马逊s3的任何直接示例,无需任何服务器端处理(除了签署请求)

我已经研究了很多选项,到目前为止所有的例子都只是解决了服务器的分块问题,或者只是从浏览器发送到s3作为单个放置,或者它们已经很老了just don't work anymore.

最大的希望是Plupload,但我找不到任何将大文件分成块的文档,至少在亚马逊的例子中没有。

最终目标是在5秒内将500mb文件发送到s3。在php中使用服务器我能够接近10秒,但是客户端希望完全避免服务器处理并直接进入s3,所以这些是我受约束的规则。

我发现亚马逊文档非常复杂且难以理解。有没有人知道浏览器分块到s3的完整示例?

Plupload设置的基本思路:

$("#uploader").plupload({
    runtimes : 'html5,flash,silverlight',
    url : 'http://<?php echo $bucket; ?>.s3.amazonaws.com/',

    multipart: true,
    multipart_params: {
        'key': '${filename}', // use filename as a key
        'Filename': '${filename}', // adding this to keep consistency across the runtimes
        'acl': 'public-read',
        'Content-Type': 'Binary/Octet-Stream',
        'AWSAccessKeyId' : '<?php echo $accessKeyId; ?>',       
        'policy': '<?php echo $policy; ?>',
        'signature': '<?php echo $signature; ?>',
        'Multiple_queues': True,
    },
    file_data_name: 'file',
    filters : {
        // Maximum file size (apparently not per chunk)
        max_file_size : '5mb',
    },
    flash_swf_url : '../js/Moxie.swf',
    silverlight_xap_url : '../js/Moxie.xap'
});

似乎多部分不是多个块,但总共可能有多个文件。不确定,我只需要寄一个。

赞赏任何意见。

1 个答案:

答案 0 :(得分:1)

Plupload does support chunked uploads所以你需要做的就是正确配置它:

var uploader = new plupload.Uploader({
browse_button: 'browse', // this can be an id of a DOM element or the DOM element itself
url: 'upload.php',
chunk_size: '200kb',
max_retries: 3

});

上面配置的最后两行将设置分块。