Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 如何将音频/视频数据uri从浏览器发送到S3中的文件_Javascript_Amazon S3 - Fatal编程技术网

Javascript 如何将音频/视频数据uri从浏览器发送到S3中的文件

Javascript 如何将音频/视频数据uri从浏览器发送到S3中的文件,javascript,amazon-s3,Javascript,Amazon S3,我有一个使用putObject将音频/视频blob上传到S3的实现。 假设obj包含以下数据: object {extension: "webm", type: "video/webm", contents: "data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvO…"} 其中contents是视频数据URI(base64字符串)。 服务器端代码为: var s3 = new AWS.S3(); obj.contents = obj.conten

我有一个使用putObject将音频/视频blob上传到S3的实现。 假设obj包含以下数据:

object {extension: "webm", type: "video/webm", 
contents: "data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvO…"}
其中contents是视频数据URI(base64字符串)。 服务器端代码为:

var s3 = new AWS.S3();
obj.contents = obj.contents.split(',').pop();
buffer = new Buffer(obj.contents, "base64");

var params = {
 Bucket: S3_BUCKET + "/videos/",
 Key: fname, // add new name 
 Body: buffer,
 ACL: 'private', 
 ContentType: obj.type
};
s3.putObject(params, handler);
如果要在客户端执行此操作,如何传递base64字符串 反对?javascript中没有缓冲区这样的东西。 我看到putObject需要一个
新缓冲区(“…”)| | streamObject | | STRING_VALUE“

但是
STRING\u值是音频/视频文件的
和选项,还是仅用于文本?

首先,我要感谢AWS团队帮助回答这个问题。看起来,尽管没有很好的文档记录,putObject()确实接受blob或任何本机类型的数组()。这意味着您可以直接在浏览器中获取任何Blob(例如音频或视频),并将其直接上载到S3文件

audioBlob = this.GetAudioBlob()
var params = {
              Bucket: "MYBUCKET",
              Key: "audio_file_test.wav",
              Body: audioBlob,//this hast to be a string                                                        
              ACL: 'private',
              ContentType: 'audio/wav',
          };
s3.putObject(params, function(err,data){ console.log(err); } );

audioBlob完全是一个Blob对象<代码>Blob{type:“audio/wav”,大小:262188,slice:function}

首先,我要感谢AWS团队帮助回答这个问题。看起来,尽管没有很好的文档记录,putObject()确实接受blob或任何本机类型的数组()。这意味着您可以直接在浏览器中获取任何Blob(例如音频或视频),并将其直接上载到S3文件

audioBlob = this.GetAudioBlob()
var params = {
              Bucket: "MYBUCKET",
              Key: "audio_file_test.wav",
              Body: audioBlob,//this hast to be a string                                                        
              ACL: 'private',
              ContentType: 'audio/wav',
          };
s3.putObject(params, function(err,data){ console.log(err); } );
audioBlob完全是一个Blob对象<代码>Blob{type:“audio/wav”,大小:262188,切片:function}