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

标签 javascript jquery amazon-s3 plupload chunking

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

我研究了很多选项,到目前为止,所有示例要么仅解决来自服务器的分块问题,要么仅作为单个 put 从浏览器发送到 s3,或者它们太旧了 just don't work anymore.

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

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

我发现 Amazon 文档非常复杂且难以理解。有没有人知道浏览器分块到 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'
});

似乎 multipart 不是多个 block ,而是总共多个文件。不确定,我只需要发送一个。

欢迎任何意见。

最佳答案

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
});

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

关于javascript - 将分块文件直接上传到 Amazon s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35947417/

相关文章:

php - 列出对象时 S3Client 上的空响应或奇怪响应

javascript - 如何解决网络故障 net::ERR_NAME_NOT_RESOLVED

Javascript - 将数组值分配给名称

javascript - 如何让我的导航栏在滚动时变成半透明?

jquery - 在 jQuery 中从 JSON 添加 div?

javascript - 在滚动上交换我的 Logo 图像(修改现有脚本)

javascript - 加载 php 文件 + 获取变量 + ajax 重新加载

javascript - 如何使用 jQuery 创建 Cookie?

javascript - 悬停、焦点操作时的 JavaScript

通过 CloudFront 加载 CSS 图像 Sprite 比在本地加载慢