我们使用ionic framework
为android
,ios
和Windows创建了一个混合应用。
因为我们有文件下载等要求并将其存储在手机/ SD卡内存中。
基本上我们从restApi获取base64数据,我们正在转换为blob数组。像这个例子Cordova-Android-Camera: How to save base64 encoded jpg to Android file system。
我们可以将base64
转换为blob
,并在android和ios中使用此代码FileWriter.write(blob)保存文件。
但Windows手机我认为它不支持blob转换,并且在此链接中https://github.com/apache/cordova-plugin-file他们提到cordova-plugin-file不支持FileReader.readAsArrayBuffer或FileWriter.write(blob)。
我们可以使用任何方法将windows phone转换为文件。
我们也尝试直接从某些链接保存图像,但我认为我们需要写权限才能在windows中存储文件,我们不知道在哪里设置windows phone的写权限。
答案 0 :(得分:1)
我已经在我的一个应用程序中完成了它并且工作得很好。请做以下事项:
在js中编写代码:
if(window.FileTransfer){
try{
console.log("filesys " + filesys);
console.log("filesys root " + filesys.root);
console.log("filesystem root path " + filesys.getRootPath);
var filePath = filesys.root().toURL() + "/" + fileName;
console.log("downloading file " + JSON.stringify(remoteData) + " at " + filePath);
var fileTransfer = new FileTransfer();
fileTransfer.download(
uri,
filePath,
function(entry) {
var retEntry = function(entry){
device.hideSpinner();
console.log("file downloaded " + entry.toURL());
success(entry);
}
retEntry(entry);
},
function(error) {
device.hideSpinner();
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
error(error);
}
);
}catch(e){
device.hideSpinner();
device.alert("error " + e);
} }else{
device.hideSpinner();
console.log("opening the file");
error();
window.open(uri, '_blank', 'location=yes'); }
这是正常的文件下载代码。
请安装以下插件以使其正常工作。
1)cordova-plugin-file“文件”https://github.com/apache/cordova-plugin-file
2)cordova-plugin-file-transfer“文件传输”https://github.com/apache/cordova-plugin-file-transfer
3)cordova-plugin-inappbrowser“InAppBrowser”https://github.com/apache/cordova-plugin-inappbrowser
希望它会对你有所帮助。