在Javascript中从本地目录中读取文件

时间:2013-11-07 17:14:17

标签: javascript jquery

我需要使用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文件的内容。

我搜索了很多内容但没有成功,欢迎任何帮助。

3 个答案:

答案 0 :(得分:8)

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

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

必须为用户提供从文件系统中明确选择文件的选项。

答案 1 :(得分:0)

出于安全原因,这是不可能或建议的。

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

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

- 允许文件存取从-文件

到目标字段。

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

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

答案 2 :(得分: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/