无法将base64转换为blob。我的函数定义如下:
function b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, {type: contentType});
return blob;
}
我在输入元素onchange()
上调用上面的函数:
previewFile(e){
var previewImage = self.root.querySelector("#previewImage");
var file = self.root.querySelector('input[type=file]').files[0];
var reader = new FileReader();
if(file){
reader.readAsDataURL(file);
} else {
previewImage.src = "";
}
reader.onloadend = function(){
var blob = self.b64toBlob(reader.result);
var blobUrl = URL.createObjectURL(blob);
previewImage.src = blobUrl;
}
}
我收到这样的错误:Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
根据错误在案例中编码的字符串是什么?
答案 0 :(得分:0)
您是否检查过base64数据,因为这可能是一个原因,请尝试此操作。
`let reader = new FileReader();
reader.onloadend = (e) => {
this.base64Data = reader.result;
console.log('before the change', this.base64Data);
}
reader.readAsDataURL(event.target.files[0]);`
这将为您提供准确的base64值。试试这个,这可能会解决你的问题。