我在通过xhr.send(Blob)上传blob时遇到了一些麻烦。我有一个网站,用户通过getUserMedia()创建一个视频,它通过blob放在我的网站内,他们可以多次录制,直到他们对视频结果感到满意为止。我希望它们能够让用户将视频上传到服务器,而无需他们下载文件,然后使用表单上传视频。所以我设法通过xhr.send
制作了这个function sendXHR(){
var xhr = new XMLHttpRequest();
var video=$("#myexportingvideo");
xhr.open('GET', video.src , true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
if (this.status == 200) {
// Note: .response instead of .responseText
var blob = new Blob([this.response], {type: 'video/webm'});
console.log(blob.size/1024);
console.log(blob.type);
form = new FormData(),
request = new XMLHttpRequest();
form.append("myblob",blob,"Capture.webm");
request.open(
"POST",
"../TryExtension/upload_file.php",
true
);
//request.send(blob);
request.send(form);
}
};
xhr.send();
}
问题是,当blob的大小大约超过1.8 MB时,发送的数据为0,所以基本上我的问题是,blob大小是否有限制,或者我必须将blob以块的形式发送到服务器? 该问题的一个例子如下。
控制台日志
frames captured: 32 => 1.077s video vid.js:155
XHR finished loading: "blob:http%3A//localhost/19d162ae-c22e-48af-a83d-2ddd579ffff9". vid.js:240
1199.46484375 vid.js:225
video/webm vid.js:226
XHR finished loading: "http://localhost/TryExtension/upload_file.php". vid.js:237
frames captured: 91 => 3.052s video vid.js:155
XHR finished loading: "blob:http%3A//localhost/c7d4f3c6-88c8-43c5-9adb-b9060c93bfb3". vid.js:240
3402.873046875 vid.js:225
video/webm vid.js:226
XHR finished loading: "http://localhost/TryExtension/upload_file.php".
第一个视频正确上传,但下一个视频上传了0个字节的信息。 在此先感谢您的帮助。