android base64转字节,android-在phonegap中将base64字符串转换为pdf

经过更多搜索和尝试之后,我发现了一些有用的方法.

//Helper function that converts base64 to blob

function b64toBlob(b64Data, contentType, sliceSize) {

var input = b64Data.replace(/\s/g, ''),

byteCharacters = atob(input),

byteArrays = [],

offset, slice, byteNumbers, i, byteArray, blob;

contentType = contentType || '';

sliceSize = sliceSize || 512;

for (offset = 0; offset < byteCharacters.length; offset += sliceSize) {

slice = byteCharacters.slice(offset, offset + sliceSize);

byteNumbers = new Array(slice.length);

for (i = 0; i < slice.length; i++) {

byteNumbers[i] = slice.charCodeAt(i);

}

byteArray = new Uint8Array(byteNumbers);

byteArrays.push(byteArray);

}

//Convert to blob.

try {

blob = new Blob(byteArrays, { type: contentType });

}

catch (e) {

// TypeError old chrome, FF and Android browser

window.BlobBuilder = window.BlobBuilder ||

window.WebKitBlobBuilder ||

window.MozBlobBuilder ||

window.MSBlobBuilder;

if (e.name == 'TypeError' && window.BlobBuilder) {

var bb = new BlobBuilder();

for (offset = 0; offset < byteArrays.length; offset += 1) {

bb.append(byteArrays[offset].buffer);

}

blob = bb.getBlob(contentType);

}

else if (e.name == "InvalidStateError") {

blob = new Blob(byteArrays, {

type: contentType

});

}

else {

return null;

}

}

return blob;

};

然后下载本身就需要cordova-file插件:

var fileToSave= b64toBlob(fileData, 'application/pdf');

writeFile();

function writeFile() {

console.log("request file system");

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemRetrieved, onFileSystemFail);

}

function onFileSystemRetrieved(fileSystem) {

console.log("file system retrieved");

fileSystem.root.getFile(fileName, { create: true }, onFileEntryRetrieved, onFileSystemFail);

}

function onFileEntryRetrieved(fileEntry) {

console.log("file entry retrieved");

fileEntry.createWriter(gotFileWriter, onFileSystemFail);

}

function gotFileWriter(writer) {

console.log("write to file");

writer.onwrite = function (evt) {

alert('done');

}

writer.write(fileToSave);

window.open(fileName, '_blank');

}

function onFileSystemFail(error) {

console.log(error.code);

alert(error.code)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值