同步XMLHttpRequest下载视频

时间:2018-04-17 11:52:33

标签: javascript ajax blob

我想从Ajax请求中完全下载mp4视频,以便稍后呈现。

使用异步请求,它可以正常工作:

const req = new XMLHttpRequest();
req.open('GET', myVideoUrl, true);
req.responseType = 'blob';
req.onload = function() {
  renderVideo(URL.createObjectURL(this.response));
};

但我宁愿同步执行此操作以阻止渲染,直到下载视频为止。我试过这种方式,但它不起作用......

const req = new XMLHttpRequest();
req.open('GET', myVideoUrl, false);
req.send(null);
const blob = new Blob([req.responseText], { type: 'video/mp4' });
renderVideo(URL.createObjectURL(blob)); 

我认为问题来自二进制数据和我尝试从responseText到objectUrl的转换......

有什么想法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

无法评论导致低业力

为什么不使用req.response?异步示例中使用的响应属性与此相同。

使用req.reponseText将无效,因为Blob构造函数需要ArrayBuffer,而不是text