Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中将base64转换为blob_Javascript_Ios_Html_Cordova_Canvas - Fatal编程技术网

在javascript中将base64转换为blob

在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

我尝试在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.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);
    });