我有一个 cordova - ionic 应用程序。 我想从网络服务下载一个文件,该文件可以是任何类型(JPG、PDG、DOCX 等)。我无法从直接 URL 下载文件。所以应用程序从 Web 服务获取文件的字节数组。
任何人都知道如何从字节数组下载移动文件。请帮助我。
最佳答案
你可以使用 Cordova 插件文件和 cordova-plugin-file-opener2 插件。
https://github.com/apache/cordova-plugin-file
https://github.com/pwlin/cordova-plugin-file-opener2
在 web 服务的功能中,您的代码应该如下所示:
var bytes = new Uint8Array(data.d);
app.writePDFToFile(fileName.split(fileName.split, bytes);
这是强制下载的函数:
writePDFToFile: function (fileName, data) {
try {
window.resolveLocalFileSystemURL(cordova.file.externalApplicationStorageDirectory, function (directoryEntry) {
directoryEntry.getFile(fileName, { create: true }, function (fileEntry) {
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function (e) {
//window.open(cordova.file.externalApplicationStorageDirectory + fileName, '_system', 'location=yes');
cordova.plugins.fileOpener2.open(cordova.file.externalApplicationStorageDirectory + fileName, 'application/pdf',
{
error: function (e) {
console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
},
success: function () {
console.log('file opened successfully');
}
}
);
};
fileWriter.onerror = function (e) {
alert(e);
};
var blob = new Blob([data], { type: 'application/pdf' });
fileWriter.write(blob);
}, function onerror(e) {
alert(e);
});
}, function onerror(e) {
alert(e);
});
}, function onerror(e) {
alert(e);
});
} catch (e) {
alert(e);
}
},
希望这会有所帮助!
关于javascript - 如何从 Cordova 应用程序中的字节数组下载任何文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402715/