在javascript中将base64转换为blob
我尝试在iOS 8上运行的Cordova/hybrid应用程序上使用以下函数在javascript中将base64转换为blob,javascript,ios,html,cordova,canvas,Javascript,Ios,Html,Cordova,Canvas,我尝试在iOS 8上运行的Cordova/hybrid应用程序上使用以下函数b64toBlob将JPEG的base64字符串转换为blob b64toBlob = function(b64, onsuccess, onerror) { var img = new Image(); img.onerror = onerror; img.onload = function onload() { var canvas = document.createEle
b64toBlob
将JPEG的base64字符串转换为blob
b64toBlob = function(b64, onsuccess, onerror) {
var img = new Image();
img.onerror = onerror;
img.onload = function onload() {
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob(onsuccess);
};
img.src = b64;
}
然而,它给出了一个错误
Uncaught Error: TypeError: undefined is not a function (evaluating 'canvas.toBlob(onsuccess)')
当我们这样做的时候
var imageData = "data:image/jpeg;base64," + imageData
b64toBlob(imageData,
function(imageBlob) {
uploadBlob(imageBlob)
}, function(error) {
console.log(error)
});
如何解决此错误?尝试一下。请注意,
dataURI
假定包含base64前缀。(例如,“数据:图像/jpeg;base64”,
)
简而言之,你可以使用下面的函数,但是如果你想了解更多细节,你可以阅读这篇文章
const b64toBlob=(b64Data,contentType='',sliceSize=512)=>{
常量ByTechCharacters=atob(B64数据);
常量字节数组=[];
for(让offset=0;offset }
我也有同样的问题。我的原因是base64字符串中有空格。base64Str=base64Str.replace(/\s/g')
这解决了我的问题请尝试这个简单的方法
fetch(base64)
.then(res => {
return res.blob();
})
.then(blob => {
console.log(blob);
});
我尝试了您的函数,得到了错误
未捕获错误:InvalidCharacterError:DOM异常5:指定了无效或非法字符,例如在XML名称中
。有什么想法吗?我把dataURI字符串复制到dataURI字符串应该包含base64头,类似于“data:image/jpeg;base64”,请告诉我它是如何使用的@NyxynyxI尝试此操作时获取“网络请求失败”。
...
var blob = b64toBlob(imageData);
var formData = new FormData();
formData.append("source", blob);
...
fetch(base64)
.then(res => {
return res.blob();
})
.then(blob => {
console.log(blob);
});
fetch("data:image/jpeg;base64," + base64Data)
.then(res => res.blob())
.then(blob => {
console.log(blob);
var url = window.URL.createObjectURL(blob);
});