如何使用Filesystem(HTML5)访问/浏览远程(服务器)文件?

时间:2013-11-18 07:02:54

标签: javascript iphone html5 cordova filesystems

我有一个内置在phonegap框架中的iphone应用程序,我正在使用Filesystem来访问远程文件,但我找不到解决方案。

我使用以下代码列出正在运行的drectories

 window.requestFileSystem(
            LocalFileSystem.TEMPORARY, 0,
            function onFileSystemSuccess(fileSystem) {

            fileSystem.root.getDirectory('test/', {create: false, exclusive: false},function(dirEntry){


                 var directoryReader = dirEntry.createReader();
                 directoryReader.readEntries(function(entries){
                 for ( i=entries.length-1; i>=0; i--) {

                 (entries[i].name.indexOf(".jpg") != -1) {
                    if(entries[i].isFile == true)
                      k++;
                        }
                }

           }
   },fail);
          },
       fail);

});

但如果我用远程服务器url替换'test /'我会收到错误。请帮帮我。 我想列出文件,并将所有文件从服务器下载到Iphone上的本地文件夹。

1 个答案:

答案 0 :(得分:0)

以下是我使用JavaScript解决类似问题的方法:

  1. 确保Web服务器允许目录访问您要查询的URL(目录中不存在index.html或index.html文件,并且目录列表不被禁止;请参阅Read remote directory with client-side javascript?)。
  2. 使用AJAX获取" raw"列出,然后Create a dummy DOM element and add the string to it,例如:

    var request = new XMLHttpRequest();
    var el = document.createElement('html');
    request.open("GET", url);
    request.onreadystatechange = function () {
        if (request.readyState === 4 && request.status === 200) {
            el.innerHTML = request.responseText;
            var myLinks = el.getElementsByTagName('a');
            var linkArray = [];
            // Extract file 'a' elements only (skip "Parent Directory," etc.):
            for (var i = 5; i < myLinks.length; i++) {
                linkArray.push(myLinks[i].href.replace(/.*\//g, ""));
            }
            console.log('files: ' + linkArray);
        }
    };
    request.send(null);
    
  3. 如果一切顺利,console.log()语句应该打印一系列文件,这些文件包含在上面给出的url中指定的目录中。