我需要一种简单的方法来允许用户一次上传多个文件(即我需要允许用户上传一个文件夹)。我不想把压缩的负担放在用户身上。
如果可能,我宁愿避免使用 Flash 或变体。 如果可能的话,我正在寻找一个直接的 javascript / HTML 解决方案。请注意,这排除了以下答案:通过 http 上传多个文件的最佳客户端浏览器库是什么?.
我需要一种简单的方法来允许用户一次上传多个文件(即我需要允许用户上传一个文件夹)。我不想把压缩的负担放在用户身上。
如果可能,我宁愿避免使用 Flash 或变体。 如果可能的话,我正在寻找一个直接的 javascript / HTML 解决方案。请注意,这排除了以下答案:通过 http 上传多个文件的最佳客户端浏览器库是什么?.
仅使用 HTML 和 Javascript 将无法做到这一点。我建议尝试Fancy Upload,这是一个用于多个文件上传的MooTools插件。它混合使用了 JavaScript 和 Flash,但会优雅地降级。它适用于包括 IE6 在内的所有主流浏览器,并且还有一个 Flash 10 兼容版本可供下载(尽管演示尚未更新)。
更新(2012-11-26):
使用valums或blueimp文件上传器可以上传多个文件。
对于递归目录上传,您最好的解决方案是使用Chrome 11 的新文件夹上传 API。如果您使用供应商前缀,它似乎也适用于 Firefox。
If you're avoiding Flash (and presumably Java?) the JS/HTML-only solution still requires single-file input
s, but essentially you attach an onchange
event to your input
, adding a new input
to the DOM whenever a file is selected.
使用valums或blueimp文件上传器可以上传多个文件。
对于递归目录上传,您的选择更加有限:
您最好的解决方案是使用Chrome 11 的新文件夹上传 API。如果您使用供应商前缀,它似乎也适用于 Firefox。
这也可以与Java 小程序跨浏览器。然而,这些天安装 JRE 的人的百分比已经很低了(< 70%)
这不是一个纯粹的 js/html 解决方案。正如 EndangeredMassa 所指出的,这是不可能的。事实上,这个想法是一个 IE/Windows 唯一的解决方案。我不推荐它,但它可以工作。
所以,除了所有免责声明......
许多年和几个雇主以前,我们曾经做过一些实例化 FileSystemObject 的客户端工作。它将遍历每个文件并一次将它们传递给服务器。不记得我们是如何做到的的细节 :o(
无论如何,这通常意味着客户端必须将站点添加到受信任站点列表中,并为受信任站点提供一堆关闭的权限(出于很好的理由)。诸如初始化和编写未标记为安全的 ActiveX 控件的能力之类的东西。那种事。
我知道这不是一个完美的答案,但它可以为您指明正确的方向。
FTP?如果需要,可以使用 Java Applet、ActiveX 或任何您想要的东西。
如果不是,尽管您不想使用 Flash,但 SWFUpload 非常酷,您可能需要重新考虑将其作为一个不错的选择。
这是使用 ExtJS 库的纯 JS 解决方案