Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将分块文件直接上载到AmazonS3_Javascript_Jquery_Amazon S3_Plupload_Chunking - Fatal编程技术网

Javascript 将分块文件直接上载到AmazonS3

Javascript 将分块文件直接上载到AmazonS3,javascript,jquery,amazon-s3,plupload,chunking,Javascript,Jquery,Amazon S3,Plupload,Chunking,我正在寻找任何直接上传到AmazonS3的例子,这些例子都是分块直接上传到AmazonS3,而不需要任何服务器端处理(除了签署请求之外) 我已经研究了许多选项,到目前为止,所有的示例要么只是处理来自服务器的分块,要么只是作为一个put从浏览器发送到s3,要么都太旧了 最大的希望是Plupload,但我找不到任何将大文件分割成块的文档,至少在amazon示例中找不到 最终目标是在5秒内将一个500mb的文件发送到s3。使用php中的服务器,我可以获得接近10秒的时间,但客户端希望完全避免服务器处理

我正在寻找任何直接上传到AmazonS3的例子,这些例子都是分块直接上传到AmazonS3,而不需要任何服务器端处理(除了签署请求之外)

我已经研究了许多选项,到目前为止,所有的示例要么只是处理来自服务器的分块,要么只是作为一个put从浏览器发送到s3,要么都太旧了

最大的希望是Plupload,但我找不到任何将大文件分割成块的文档,至少在amazon示例中找不到

最终目标是在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'
});
$(“#上传器”).plupload({
运行时:“html5、flash、silverlight”,
网址:'http://.s3.amazonaws.com/',
多部分:正确,
多部分参数:{
'key':'${filename}',//将filename用作键
'Filename':'${Filename}',//添加此项以保持运行时的一致性
“acl”:“公共读取”,
“内容类型”:“二进制/八位字节流”,
“AWSAccessKeyId”:“,
“政策”:“,
“签名”:“,
“多个队列”:True,
},
文件\数据\名称:“文件”,
过滤器:{
//最大文件大小(显然不是每个块)
最大文件大小:“5mb”,
},
flash_swf_url:“../js/Moxie.swf”,
silverlight_xap_url:“../js/Moxie.xap”
});
似乎multipart不是多个块,但可能是多个文件的总和。不确定,我只需要寄一份

非常感谢您的任何输入。

因此,您只需正确配置即可:

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

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

只是为了澄清。。。您希望从客户端(用户)计算机还是从服务器将文件发送到S3?如果是后者,您是否查看过AWS SDK for PHP中的?它支持从客户端进行多部分上传。标准的AWS库直接处理服务器传输,但不方便地掩盖了来自客户端的分块。或者?后者使用。是的,我看过亚马逊的文档,我在帖子中提到的enzam链接已经不起作用了。我目前正在使用jquery文件库对此进行研究:-但是我没有看到任何并发传输的证据。它是分块的,只是在单个文件中发送,而不是在并发批处理中。这个问题已经过时,不再需要了。客户带着别的东西去了。但是,如果您想用一个好的代码片段更新答案——以防链接失效——我可以接受添加的应答代码片段。见上文。