【问题标题】:Illegal Constructor error: convert Base64 to Blob fails on cordova非法构造函数错误:在科尔多瓦上将 Base64 转换为 Blob 失败
【发布时间】:2016-05-20 10:33:46
【问题描述】:

我想使用 AngularJS 将我的 Base64 图像转换为我的科尔多瓦应用程序项目中的 blob,但我不断收到非法构造函数错误。我已经尝试了很多在线提供的解决方案,但似乎都没有奏效。任何帮助表示赞赏。

var imageElement = angular.element(document.querySelector('#profileImg'));
var imageURI = dataURIToBlobURI(imageElement.attr('src'));

 function dataURIToBlobURI(dataURI) {
    // convert base64 to raw binary data held in a string
    // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
    var byteString = atob(dataURI.split(',')[1]);

    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]

    // write the bytes of the string to an ArrayBuffer
    var ab = new ArrayBuffer(byteString.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
    }

    var bb = new Blob([ab], {type: 'image/png'});
    return bb;
  }

我在这里不断收到错误new Blob([ab], {type: 'image/png'}) 并且似乎不知道如何使它工作。仅当应用在 Android 或 iOS 中时才会发生,而不是在 Chrome 中查看时发生。

我尝试了以下方法,但均无济于事。

var bb = new Blob(ab);
var bb = new Blob([ab]);
var bb = new Blob(dataURI); 

谢谢

【问题讨论】:

  • 你试过new Blob([ia], {type: 'image/png'});
  • 试过但没用

标签: javascript android angularjs cordova blob


【解决方案1】:

金斯利!可能,您可以重现错误的设备实际上不支持 Blob。其实你可以使用两种方式:

首先,检查 polyfill 或类似的东西来解决您的问题。它将允许您使用 Blob 作为构造函数。

其次,除了 Blob,您还可以使用 BlobBuilder。下面的小例子,

var bb = new BlobBuilder();
bb.append('blob content');
var blob = bb.getBlob('text/plain');

【讨论】:

  • 谢谢! ...还请注意,在某些较旧的浏览器上,语法“new BlobBuilder()”可能会抛出错误 =“ReferenceError = BlobBuilder 未定义”。要解决此问题并确保安全,请使用以下代码启动 BlobBuilder:window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder ||窗口.MSBlobBuilder; ...参考:developers.google.com/web/updates/2012/06/…
【解决方案2】:

我用它来解决我的问题。以防万一有人遇到这个问题。所有解决方案都不适用于我的设备。只需按照说明添加 javascript 文件,就可以了。 https://github.com/blueimp/JavaScript-Canvas-to-Blob

var b64Data = 'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' +
        'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' +
        'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7',
    imageUrl = 'data:image/gif;base64,' + b64Data,
    blob = window.dataURLtoBlob && window.dataURLtoBlob(imageUrl);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多