Chrome扩展:如何列出本地目录的内容(Chrome Extension: How to List

2019-07-30 09:03发布

我想做的事:

我想创建一个Chrome扩展用于测试目的。 这延长应该能够访问本地硬盘驱动器上的目录和文件。

如何我做到了:

我要求权限file:///*在我manifest.json文件。 然后,我确信,该复选框Allow access to file URLs进行了调查。 然后,我做了一个文件XHR:

  var xhr = new XMLHttpRequest();  
  xhr.open("GET", 'file://c:/dir/file.name', true);     
  xhr.onload = function(e) {  
      console.log('response: ', xhr.response);
  }  
  xhr.send();

...并为整个目录XHR:

  var xhr = new XMLHttpRequest();  
  xhr.open("GET", 'file://c:/dir/', true);     
  xhr.onload = function(e) {  
      console.log('response: ', xhr.response);
  }  
  xhr.send();

...和文件系统:

  var xhr = new XMLHttpRequest();  
  xhr.open("GET", 'file:///', true);     
  xhr.onload = function(e) {  
      console.log('response: ', xhr.response);
  }  
  xhr.send();

发生了什么:

  • 我能为我的文件请求正确的反应。
  • 当我要求一个目录,我收到Chrome的默认人类可读的目录概述的源代码:

  <html>
  <head>
  <script>

[...]

  </script>
  <style>

[...]

  </style>
  <title id="title"></title>
  </head>
  <body>
  <div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxText"></div>
  <span id="parentDirText" style="display:none" i18n-content="parentDirText"></span>
  <h1 id="header" i18n-content="header"></h1>
  <table id="table">
    <tr class="header">
      <td i18n-content="headerName"></td>
      <td class="detailsColumn" i18n-content="headerSize"></td>
      <td class="detailsColumn" i18n-content="headerDateModified"></td>
    </tr>
  </table>
  </body>
  </html>

[...]

  <script>start("C:\\dir\\");</script>
  <script>addRow("..","..",1,"0 B","11/11/11 11:11:11 AM");</script>
  <script>addRow("file.name","file.name",0,"4.9 kB","11/11/11 11:11:11 PM");</script>
  • 当我要求整个文件系统,我得到了一个错误。

我的问题:

我能读懂简单的文件。 但我的分机号可以得到一个目录文件系统的一个很好的机器可读概述 ? 谢谢。

编辑:我知道文件系统API用于访问沙盒filesystem:// ,但也许Chrome可让扩展还可以访问file:// 。 我找不到任何有关文件file://从Chrome扩展的访问,所以我只是能猜到。

Answer 1:

有一个在独立浏览器没有内置的功能。

替代解析目录列表页面:

  1. NPAPI扩展(C ++,推荐)
  2. 本地服务器的文件系统访问。 是的NodeJS挑好 。


文章来源: Chrome Extension: How to List The Contents of Local Directory