【问题标题】:How to access/ explore remote(server) files using Filesystem (HTML5)?如何使用文件系统(HTML5)访问/探索远程(服务器)文件?
【发布时间】:2013-12-01 06:12:28
【问题描述】:

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

我使用以下代码列出了正在运行的目录

 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 上的本地文件夹。

【问题讨论】:

  • HTML5 文件系统旨在供本地使用。您不能使用它从服务器下载文件。为此,您需要服务器端代码。
  • 感谢您的快速响应。但我已经使用 HTML5 文件系统来下载单个文件表单服务器,并且它正在工作。我想下载多个文件,因此需要列出服务器上的所有文件。
  • 如果您知道单个文件的 URL,您可以下载它。要获取目录列表,您需要服务器端代码。
  • 能否请您更具体地说明我必须使用什么服务器端代码..
  • 我没有什么特别的想法。一个 PHP 脚本可以返回一个目录列表并可能提供下载。或者您可以使用其他一些服务器端技术。任何适合您的应用程序

标签: javascript iphone html cordova filesystems


【解决方案1】:

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

  1. 确保 Web 服务器允许目录访问您正在查询的 url(目录中不存在 index.html 或 index.html 文件,并且目录列表不被禁止;请参阅 Read remote directory with client-side javascript?)。
  2. 使用 AJAX 获取“原始”列表,然后 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);
    

如果一切顺利,console.log() 语句应打印上面给出的url 指定的目录中包含的一系列文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 2019-01-23
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多