2

我想读取一个目录并用这些文件的名称填写一个列表。

是否可以使用 javascript 执行此任务?

4

6 回答 6

4

不,这是不可能的。您希望有人阅读目录的内容吗?

更新:我想你可以通过使用webkitdirectory属性得到最接近的:

HTML

<input type="file" id="file_input" webkitdirectory="" directory="" />
<div id="list_of_files"></div>
...

JS

var $list = $('#list_of_files');
$('#file_input').change(function(event) {
  var listOfFiles = event.target.files;
  for (var i = 0, l = listOfFiles.length; i < l; ++i) {
     $list.append($('<p>'+ listOfFiles[i].name +'</p>'));
  }
});

... 如此处所示。但它仅在 Chrome 中有效(并且建议的mozdirectory属性用法没有帮助)。

于 2012-07-04T15:37:17.950 回答
4

不,出于安全原因。

您可以通过调用 ActiveX 或 Flash 并让用户同意允许从这些插件访问文件系统来做到这一点,但是 - 请不要。

10 年后编辑:不仅请不要这样做,而且现在除了使用没有更新的旧设备之外 - 您不能使用 Flash/ActiveX 执行此操作。

于 2012-07-04T15:37:38.810 回答
2

您可以尝试使用FileReader对象,但浏览器对它的支持很差。

于 2012-07-04T15:39:12.790 回答
1

在谷歌浏览器中,您可能会提示客户端选择一个目录,然后使用它来列出目录及其子目录中包含的文件:

<input type="file" webkitdirectory onchange="listContents(this.files)">

listContents将是您的实施。

于 2012-07-04T15:39:56.407 回答
0

我不知道你是否在做安全研究等等。所以除了说“你不应该这样做”之外,问题的实际答案是,你实际上可以利用写得不好的 JS 代码来阅读文件,这就是为什么你应该编码......防御性。

然后是这个:http ://www.html5rocks.com/en/tutorials/file/dndfiles/

于 2012-07-04T15:40:44.860 回答
0

是的,取决于您使用的浏览器。

尽管这不是一种常见的做法,但您可以使用某些浏览器,例如 Chrome(使用 webkitRequestFileSystem 支持的 requestFileSystem)或在 Internet Explorer 中使用文件系统对象。

于 2012-07-04T15:43:13.273 回答