将文件夹上传到网站的最佳方法是什么?

时间:2008-10-31 17:13:05

标签: javascript html file-upload

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

如果可能的话,我宁愿避免使用Flash或变种。如果可能的话,我正在寻找一个直接的javascript / HTML解决方案。请注意,这排除了答案:What is the best client side browser library to upload multiple files over http?

7 个答案:

答案 0 :(得分:26)

仅使用HTML和Javascript就无法做到这一点。我建议您尝试使用Fancy Upload MooTools插件进行多个文件上传。它使用JavaScript和Flash的混合,但优雅地降级。它适用于所有主流浏览器,包括IE6,还有可下载的Flash 10兼容版本(虽然该演示尚未更新)。


更新(2012-11-26):

valumsblueimp文件上传者可以上传多个文件

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

答案 1 :(得分:4)

随着Firefox 42和Edge实施新的directory upload proposal,我们终于能够进行跨浏览器目录上传。这些API非常糟糕,您可能需要查看我的包装器uppie

答案 2 :(得分:3)

如果您正在避免使用Flash(可能是Java?),那么仅使用JS / HTML的解决方案仍然需要单个文件input,但基本上您会将onchange事件附加到{{1}每当选择文件时,都会向DOM添加一个新的input

答案 3 :(得分:2)

FTP?如果是necs,请用Java Applet,ActiveX或任何你想要的东西包装。

如果没有,虽然你不想要闪存,但SWFUpload非常酷,你可能想重新考虑它作为一个不错的选择。

答案 4 :(得分:2)

valumsblueimp文件上传者可以上传多个文件

对于递归目录上传,您的选项更受限制:

  • 您最好的解决方案是使用Chrome 11's new folder upload API。如果您使用供应商前缀,它似乎也适用于Firefox。

  • 这也可以与Java applet进行跨浏览。然而,这些天安装了JRE的人数百分比相当低(< 70%

答案 5 :(得分:1)

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

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

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

无论如何,这通常意味着客户端框需要将站点添加到受信任站点列表中,并为受信任站点提供一系列被关闭的权限(出于非常好的理由)。就像初始化和编写未标记为安全的ActiveX控件的脚本一样。那种事。

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

答案 6 :(得分:1)

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