2016-08-29 76 views
0

有下面的代码:JS转换BLOB网址为Base64文件

console.log(blob); 
var reader = new window.FileReader(); 
reader.onloadend = function() {    
    console.log(reader.result); 
}; 
reader.readAsDataURL(blob); 

斑点是 'blob:http://localhost:3000/e3c23a22-75b1-4b83-b39a-75104d1909b9' 我已经得到了以下错误:

TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'. 

我怎样才能解决这个错误并将Blob转换为Base64编码图像?提前致谢!

+0

嘿巴迪,我坚持着同样的问题。你有没有找到关于它或任何其他方式的iDEA。 –

回答

-2

在这里没有关于xhr的代码,但它可能是你没有设置responseType的权利。在xhr.send()之前尝试xhr.responseType = 'blob'

而且,除了使用FileReader,下面可能会更直截了当:

xhr.onreadystatechange = function(){ 
    if (this.readyState == 4 && this.status == 200){ 
     var url = window.URL || window.webkitURL; 
     img.src = url.createObjectURL(this.response); 
    } 
} 
+0

什么?那不是被问到的。他们明确使用类似视频流的东西,并希望将blob网址转换为base64以在其他地方使用。 –

0

你需要在整个文件对象把内容上传,而不仅仅是BLOB网址。整个文件对象的意思是名称,类型,网址等。

基本上,如果上传者在数组中有一个文件,即files[0],那么您会传入readAsDataURL(files[0])