Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PhoneGap下载文件并在AngularJS中使用_Javascript_Android_Ios_Angularjs_Cordova - Fatal编程技术网

Javascript 使用PhoneGap下载文件并在AngularJS中使用

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

我正在用AngularJS构建一个PhoneGap/Cordova应用程序。我花了大量时间研究如何成功地将远程文件下载到设备上。这是我的代码:

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;