18

我需要一种简单的方法来允许用户一次上传多个文件(即我需要允许用户上传一个文件夹)。我不想把压缩的负担放在用户身上。

如果可能,我宁愿避免使用 Flash 或变体。 如果可能的话,我正在寻找一个直接的 javascript / HTML 解决方案。请注意,这排除了以下答案:通过 http 上传多个文件的最佳客户端浏览器库是什么?.

4

7 回答 7

27

仅使用 HTML 和 Javascript 将无法做到这一点。我建议尝试Fancy Upload,这是一个用于多个文件上传的MooTools插件。它混合使用了 JavaScript 和 Flash,但会优雅地降级。它适用于包括 IE6 在内的所有主流浏览器,并且还有一个 Flash 10 兼容版本可供下载(尽管演示尚未更新)。


更新(2012-11-26):

使用valumsblueimp文件上传器可以上传多个文件

对于递归目录上传,您最好的解决方案是使用Chrome 11 的新文件夹上传 API。如果您使用供应商前缀,它似乎也适用于 Firefox。

于 2008-10-31T18:24:06.113 回答
4

随着 Firefox 42 和 Edge 实施了新的目录上传提议,我们终于能够进行跨浏览器目录上传。API 非常糟糕,您可能想查看我的包装器uppie

于 2015-07-26T20:24:51.207 回答
3

If you're avoiding Flash (and presumably Java?) the JS/HTML-only solution still requires single-file inputs, but essentially you attach an onchangeevent to your input, adding a new inputto the DOM whenever a file is selected.

于 2008-10-31T17:16:00.867 回答
2

使用valumsblueimp文件上传器可以上传多个文件

对于递归目录上传,您的选择更加有限:

于 2012-11-21T04:25:04.357 回答
1

这不是一个纯粹的 js/html 解决方案。正如 EndangeredMassa 所指出的,这是不可能的。事实上,这个想法是一个 IE/Windows 唯一的解决方案。我不推荐它,但它可以工作。

所以,除了所有免责声明......

许多年和几个雇主以前,我们曾经做过一些实例化 FileSystemObject 的客户端工作。它将遍历每个文件并一次将它们传递给服务器。不记得我们是如何做到的的细节 :o(

无论如何,这通常意味着客户端必须将站点添加到受信任站点列表中,并为受信任站点提供一堆关闭的权限(出于很好的理由)。诸如初始化和编写未标记为安全的 ActiveX 控件的能力之类的东西。那种事。

我知道这不是一个完美的答案,但它可以为您指明正确的方向。

于 2008-10-31T17:31:22.647 回答
1

FTP?如果需要,可以使用 Java Applet、ActiveX 或任何您想要的东西。

如果不是,尽管您不想使用 Flash,但 SWFUpload 非常酷,您可能需要重新考虑将其作为一个不错的选择。

于 2008-10-31T17:34:56.727 回答
1

是使用 ExtJS 库的纯 JS 解决方案

于 2008-10-31T23:25:32.870 回答