我正在使用RecordRTC.js在客户端生成.webm blob - 这一切都按预期工作。然后我需要将此.Webm文件保存到Amazon S3。
我目前在控制台中收到“未找到元素”消息,因为安全性不允许使用blob填充文件字段 - 那么发送blob的正确做法是什么?
我的S3帐户正在保存损坏的.webm文件,因此应用程序可以连接到S3。
这是我尝试发送.webm文件的JavaScript:
/**
* S3 CORS
*/
uploading = false;
var xhr = new XMLHttpRequest();
function uploadFile() {
var fd = new FormData();
var key = 'webup-' + (new Date).getTime() + '-' + 'webcam.webm'
fd.append('key', key);
fd.append('acl', 'private');
fd.append('Content-Type', 'video/webm');
fd.append('AWSAccessKeyId', 'access-id');
fd.append('policy', 'policy-str');
fd.append('signature', 'signature-str');
fd.append('file', blob); // blob = video.src (the generated webm file)
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open('POST', 'https://mybucket.s3.amazonaws.com/', true);
xhr.send(fd);
uploading = true;
}
function uploadProgress(evt) { }
function uploadComplete(evt) { alert('Upload Complete'); }
function uploadFailed(evt) { alert('Upload Failed'); }
function uploadCanceled(evt) { alert('Upload Canceled') }
/**
* ready()
*/
$(document).ready(function(){
saveRecording.disabled = true;
$("#save-recording").click(function(){
uploadFile();
});
});
提前致谢!
答案 0 :(得分:0)
你应该试试recordly.io;检查文件iohandler.js#L24。它正在将记录的blob读取为数据URL;并使用socket.io消息将结果DataURL推送到nodejs服务器;但是您可以轻松选择HTTP-POST机制。