问题不是从

What’s the difference between BlobBuilder and the new Blob constructor?重复

我正在做网络应用程序.要上传图像我使用Blob,以防万一BlobBuilder. Blob运行良好,但Blob不适用于Android原生浏览器,Android原生浏览器使用BlobBuilder.我预计,Blob和BlobBuilder返回相同的blob,但他们没有.这是我的代码:

base64toBlob: function(b64Data,contentType,sliceSize) {

var BlobBuilder,blob,byteArray,byteCharacters,byteNumbers,charCodeFromCharacter,err,posIndex;

if (contentType == null) {

contentType = '';

}

if (sliceSize == null) {

sliceSize = 1024;

}

posIndex = b64Data.indexOf('base64,');

if (posIndex !== -1) {

b64Data = b64Data.substring(posIndex + 7);

}

charCodeFromCharacter = function(c) {

return c.charCodeAt(0);

};

byteCharacters = atob(b64Data.replace(/\s/g,''));

byteNumbers = Array.prototype.map.call(byteCharacters,charCodeFromCharacter);

byteArray = new Uint8Array(byteNumbers);

try {

blob = new Blob([byteArray.buffer],{

type: contentType

});

return blob;

} catch (_error) {

err = _error;

BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;

blob = new BlobBuilder();

blob.append(byteArray.buffer);

return blob.getBlob(contentType);

}

}

我发送请求时做了日志

blobImg = base64toBlob(base64Data,imageType);

alert(JSON.stringify(blobImg));

// alert shows {"type": "image/jpeg","size": 10251 } when blob worked

// alert shows {"type": "image/jpeg","size": 27822 } when blobbuilder worked

ajaxRequest.send(blobImg);

我尝试在所有浏览器上以相同的图像上传.在Chrome和其他浏览器上,我从log {“type”:“image / jpeg”,“size”:10251}获取并请求发送成功,但在Android原生浏览器上我得到{“type”:“image / jpeg”,“大小“:27822}并且请求失败,状态码为0.在android浏览器上工作catch部分(我猜,这意味着Android本机浏览器不支持Blob)我在android 4.1.2中测试过.我从谷歌没有发现任何问题.我很高兴如果有人帮助我!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐