我想读取一个目录并用这些文件的名称填写一个列表。
是否可以使用 javascript 执行此任务?
不,这是不可能的。您希望有人阅读您目录的内容吗?
更新:我想你可以通过使用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
属性用法没有帮助)。
不,出于安全原因。
您可以通过调用 ActiveX 或 Flash 并让用户同意允许从这些插件访问文件系统来做到这一点,但是 - 请不要。
10 年后编辑:不仅请不要这样做,而且现在除了使用没有更新的旧设备之外 - 您不能使用 Flash/ActiveX 执行此操作。
您可以尝试使用FileReader
对象,但浏览器对它的支持很差。
在谷歌浏览器中,您可能会提示客户端选择一个目录,然后使用它来列出目录及其子目录中包含的文件:
<input type="file" webkitdirectory onchange="listContents(this.files)">
listContents
将是您的实施。
我不知道你是否在做安全研究等等。所以除了说“你不应该这样做”之外,问题的实际答案是,你实际上可以利用写得不好的 JS 代码来阅读文件,这就是为什么你应该编码......防御性。
然后是这个:http ://www.html5rocks.com/en/tutorials/file/dndfiles/
是的,取决于您使用的浏览器。
尽管这不是一种常见的做法,但您可以使用某些浏览器,例如 Chrome(使用 webkitRequestFileSystem 支持的 requestFileSystem)或在 Internet Explorer 中使用文件系统对象。