Javascript 使用PhoneGap下载文件并在AngularJS中使用
我正在用AngularJS构建一个PhoneGap/Cordova应用程序。我花了大量时间研究如何成功地将远程文件下载到设备上。这是我的代码:Javascript 使用PhoneGap下载文件并在AngularJS中使用,javascript,android,ios,angularjs,cordova,Javascript,Android,Ios,Angularjs,Cordova,我正在用AngularJS构建一个PhoneGap/Cordova应用程序。我花了大量时间研究如何成功地将远程文件下载到设备上。这是我的代码: download: function() { console.log('start download'); var remoteFile = "http://remoteserver.domain"; var localFileName = "file.json"; window.requestFileSystem(Lo
download: function() {
console.log('start download');
var remoteFile = "http://remoteserver.domain";
var localFileName = "file.json";
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(localFileName, {create: true}, function(fileEntry) {
var localPath = fileEntry.toURL();
var ft = new FileTransfer();
ft.download(remoteFile,
localPath,
function(entry){console.log(entry)},
function(error){console.log(error.code)}
);
}, function(error){console.log(error.code)});
}, function(error){console.log(error.code)});
}
对于iOS,文件系统API返回的文件的本机路径是my app的Documents文件夹。但是因为我使用的是AngularJS,并且它运行在Appname.app文件夹中的www文件夹中,所以我不知道如何从AngularJS访问该文件,以便它在Android和PhoneGap支持的其他操作系统中也可以开箱即用
因此,我要做的是告诉文件API将文件保存在Appname.app/www文件夹中,或者告诉AngularJS使用../Documents/folder,但不要特定于平台。也许我可以使用一个完全不同的解决方案?我们已经在应用程序中实现了类似的功能,下面的代码会让您了解它
$rootScope.download = function(ii,catalogs)
{
var len = catalogs.length;
if(ii==len)
{
localStorage.setItem("catalogdwnld", 1);
if($rootScope.loadingmodal){
$rootScope.loadingmodal.opened.then(function () {
$rootScope.loadingmodal.dismiss( "cancel" );
});
}
}
else if(ii < catalogs.length){
var id = catalogs[ii].id;
/**/
if(catalogs[ii].parentId==0)
{
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem) {
var directoryEntry = fileSystem.root; // to get root path to directory
directoryEntry.getDirectory("catalogs", {create: true, exclusive: false}, onDirectorySuccess, onDirectoryFail);
// root directory path
var rootdir = fileSystem.root;
var fp = rootdir.toURL();
// storing images in catalogs folder
fp = fp+"/catalogs/"+id+".png";
var fileTransfer = new FileTransfer();
fileTransfer.download($window.service_url+"/catalog/cover/"+id+"",fp,
function(entry) {
var native_url = entry.toNativeURL();
/***** Store it in db *******/
},
function(error) {
navigator.notification.alert(
'Download failed, please try again',
null,
'Download Failed',
'OK');
}
);
}
}
}
我们将本机路径存储在db中,以便以后可以使用它来显示图像。如果你的应用程序不是离线的,那么你可以使用html4\5本地存储
我们已经在android和ios上测试了上述代码,所以它应该可以在平台上运行
谢谢 在Cordova中也有下载文件的ng服务。使用cordova文件api。在Android和iOS上测试。提供下载单个文件或文件数组的方法
此AngularJS模块使用cordova文件API,不需要文件传输插件。您可以创建多个队列来下载文件,并在文件下载后执行任何操作,这是非常有文档记录的
-谢谢,我会试试看!
fileSystem.root;