如何从HTML输入类型“文件”或任何其他方式获取文件夹目录?


70

因此,我有一个带有类型的基本表单输入,"file"但是我希望用户能够选择文件夹位置而不是文件。

如何获得此输入以选择文件夹而不是文件,还是有另一种方法呢?


为什么选择保存文件夹位置?
hjpotter92 2012年

3
您是否要上传所选文件夹中的所有文件?
Parag Meshram 2012年

1
问题是,一旦找到该文件夹​​,您将如何处理?您要上传文件夹中的所有文件吗?还是对该文件夹执行其他操作?通常,浏览器无法直接对文件夹执行任何操作,因此,除非您计划上传内容,否则希望指定文件夹没有太多逻辑。
Spudley

好的,基本上,我有一个PHP脚本,该脚本创建了一个文件夹中所有图像文件的数组,并且我想为用户创建某种选择过程,以选择脚本需要在哪个文件夹上运行。然后,PHP脚本创建一个图像文件数组,并将所有图像显示在一个网页上。现在听起来像是个坏主意,但这样做很有意义。
2012年

Answers:


70

同样在此页面上迷失了方向,然后发现仅使用javascript(没有像ActiveX或Flash这样的插件)就可以实现,而仅使用chrome:

https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3

基本上,他们在文件输入元素“ webkitdirectory”上增加了对新属性的支持。您可以像这样使用它:

<input type="file" id="ctrl" webkitdirectory directory multiple/>

它允许您选择目录。对于支持多个文件选择但不支持目录选择的浏览器,multiple属性是一个很好的后备。

选择目录时,文件可以通过dom对象获得控件(document.getElementById('ctrl')),就像它们具有Multiple属性一样。浏览器将所选目录中的所有文件递归添加到该列表中。

您还可以添加目录属性,以防在某些时候标准化(找不到有关该属性的任何信息)


5
但是请注意,这阻止了选择单个文件的可能性。迄今为止,使用“标准”方式(非Flash,非Silverlight等)选择文件和目录的唯一方法是提供两个单独的输入元素。
Nikolay Melnikov 2014年

3
@NikolayMelnikov或通过拖放操作
antonj

如何使它接受包括文件和文件夹在内的多种内容?
卡斯珀

1
我不会依赖它,因为directory在实时HTML规范html.spec.whatwg.org/multipage/input.html#the-input-element
Xenos,

1
看起来主要桌面浏览器都支持它:caniuse.com/#feat=input-file-directory
RaschidRafaelly

1

您最有可能使用Flash / Silverlight / ActiveX控件。该<input type="file" />控制不处理。

如果您不介意用户选择文件作为获取目录的方法,则可以绑定到该控件的change事件,然后删除文件名部分并将路径保存在某处,但这与它获得的效果差不多。

请记住,网页旨在与服务器交互。向远程服务器提供本地目录没有什么是“典型的”(服务器无法访问它,为什么要要求它?);但是,文件是有选择地传递信息的一种手段。


-3

尽管这是一个古老的问题,但这可能会对某人有所帮助。

使用“多个”浏览文件时,我们可以选择多个文件

<input type="file" name="datafile" size="40"  multiple> 

2
确实与问题无关。
madc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.