我想读取一个目录,并用这些文件的名称填充列表。
使用JavaScript可以完成这些任务吗?
使用JavaScript可以完成这些任务吗?
不行,出于安全考虑。
你可以通过调用ActiveX或Flash并让用户同意允许这些插件访问文件系统来实现,但是请不要这样做。
编辑10年后: 不仅请不要这样做,而且现在除了使用没有更新的旧设备外,您无法使用Flash/ActiveX进行此操作。
<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
属性也没有帮助)。
<input type="file" webkitdirectory onchange="listContents(this.files)">
listContents
将是您的实现。
我不知道你是否在进行安全研究等等...所以除了说“你不应该这样做”之外,对于这个问题的实际答案是,你可以通过利用编写不良的JS代码来读取文件,这就是为什么你应该进行防御性编码。
然后还有这个:http://www.html5rocks.com/en/tutorials/file/dndfiles/
是的,这取决于您使用的浏览器。
尽管这不是常见的做法,但您可以使用某些浏览器,例如Chrome(使用webkitRequestFileSystem支持的requestFileSystem)或在Internet Explorer中使用文件系统对象。