我正在尝试使用 HTML2Canvas 和 CordovaExternalDirectory 将 Base64 图像写入设备存储中。
图像文件已创建,但已损坏。当我使用 BlobUrl 函数打开 blob 图像时,它在新窗口中工作正常。
注意:Android Manifest 中添加了所需的权限
下面的示例代码
var blobUrl;
function customB64toBlob(b64Data) {
console.log(" ----- b64Data ----");
var parts = b64Data.split(";");
var contentType = parts[0].split(":")[1];
var realData = parts[1].split(",")[1];
console.log(parts);
console.log("Real data");
contentType = contentType || '';
sliceSize = 512;
var byteCharacters = atob(realData);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, {type: contentType});
blobUrl = URL.createObjectURL(blob);
console.log(blob);
return blob;
}
function savebase64AsImageFile(folderpath,filename,content){
// Convert the base64 string in a Blob
var dataBlob = customB64toBlob(content);
console.log(" ----- Writing file ----");
window.resolveLocalFileSystemURL(folderpath, function(dir) {
console.log("Access to the directory granted succesfully");
dir.getFile(filename, {create:true}, function(file) {
console.log("File created succesfully.");
file.createWriter(function(fileWriter) {
console.log("Writing content to file");
fileWriter.write(dataBlob);
}, function(){
alert('Unable to save file in path '+ folderpath);
});
});
});
}
当我使用 Bloburl 在新窗口中打开时 - 输出在此处
但是写入图像文件后,这是结果
MMTTMM
相关分类