3

我需要使用 Javascript(或使用 JQuery,没关系)从计算机硬盘驱动器中的特定路径读取文件。我一直在谷歌搜索,但我发现的东西并没有真正的帮助。我最接近的是:

  function readSingleFile(evt) {
    //Retrieve the first (and only!) File from the FileList object
    var f = evt.target.files[0]; 

    if (f) {
      var r = new FileReader();
      r.onload = function(e) { 
          var contents = e.target.result;
        alert( "Got the file.\n" 
              +"name: " + f.name + "\n"
              +"type: " + f.type + "\n"
              +"size: " + f.size + " bytes \n"
              + "starts with: " + contents.substr(1, contents.indexOf("\n"))
        );  
      }
      r.readAsText(f);
    } else { 
      alert("Failed to load file");
    }
  }

  document.getElementById('fileinput').addEventListener('change', readSingleFile, false);

它允许使用文件选择器选择文件,然后显示文件的内容。我需要编写一个程序来读取您明确给出位置的文件,例如 c:\files\test.txt,并打印 test.txt 文件的内容。

我用谷歌搜索了很多都没有成功,欢迎任何帮助。

4

3 回答 3

8

如果我错了,有人纠正我,但据我所知,由于安全问题,这在 JavaScript 中是不可能的。

如果是这样,网页可以在未经您同意或您不知情的情况下获取您文件系统上的任何文件。这是一个主要的安全问题,所以我认为这是不可能的。

必须为用户提供在知情的情况下从其文件系统中选择文件的选项。

于 2013-11-07T17:17:48.170 回答
0

出于安全原因,这实际上是不可能或不推荐的。

如果这仅用于您的个人计算机或出于测试原因,您可以为浏览器添加一个选项以允许文件访问,但如果您正在浏览其他网站,这显然是一个安全问题。

假设您使用的是 Chrome,您可以为 chrome 创建一个快捷方式并附加

--allow-file-access-from-files

到目标字段。

然后您必须启动该快捷方式,并从该浏览器实例中打开 html。

理想情况下,您应该托管文件服务器端,或者有一个文件选择选项。

于 2013-11-07T17:26:14.723 回答
0

无法访问用户文件系统。

但是,使用 FileSystem API,您可以获得一个临时或持久的私有文件系统,您可以在其中为您的应用程序存储内容(例如缓存的图像)。然后,您可以将此 API 与 File API 结合使用,以允许用户将文件从用户文件拖放到您的应用程序中。

根据您的应用程序,这可能会或可能不会令人满意。

FileSystem API 教程: http: //www.html5rocks.com/en/tutorials/file/filesystem/

文件 API 教程: http ://www.sitepoint.com/html5-file-drag-and-drop/

于 2013-11-07T17:31:04.807 回答