English 中文(简体)
上传一个文件夹到网站的最佳方法是什么?
原标题:
  • 时间:2008-10-31 17:13:05
  •  标签:

我需要一种简单的方法,让用户一次上传多个文件(即我需要允许用户上传文件夹)。我不希望让用户压缩文件。

如果可能的话,我更愿意避免使用闪存或其变体。我正在寻找一个直接使用JavaScript / HTML的解决方案。请注意,这排除了“通过HTTP上传多个文件的最佳客户端浏览器库是什么?” 的答案。

最佳回答

您无法仅用 HTML 和 Javascript 完成此操作。我建议尝试使用Fancy Upload,这是一个支持多文件上传的 MooTools 插件。它使用JavaScript和Flash的混合方式,但具有优雅降级的效果。它适用于所有主流浏览器,包括IE6,还可以下载Flash 10兼容版本(尽管演示尚未更新)。


更新(2012年11月26日):

使用valums或blueimp文件上传器可以实现多文件上传。

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

问题回答

随着 Firefox 42 和 Edge 实现了新的目录上传建议,我们终于可以进行跨浏览器目录上传了。 这些 API 足够混乱,因此您可能需要查看我的包装器uppie

如果您想避免Flash(以及可能的Java),则使用仅限于JS / HTML的解决方案仍需要单文件input,但基本上您可以将onchange事件附加到您的input上,在每次选择文件时向DOM添加一个新的input。

使用valums或blueimp文件上传器可以进行多文件上传。

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

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

  • 这也可以用Java小程序进行跨浏览器操作。然而,目前已经安装了JRE的人数百分比相当低(<70%)。

这不是纯js / html解决方案。正如EndangeredMassa指出的那样,这是不可能的。实际上,这个想法只是IE / Windows解决方案。我不建议使用它,但它可以工作。

所以,除了所有的免责声明之外...

许多年以前,我们与几个雇主合作时,我们曾执行一些客户端任务,其中包括实例化FileSystemObject。它将遍历每个文件并逐个通过服务器传递它们。我记不得我们是如何做到这一点的:o(

总之,这通常意味着客户端框需要将网站添加到受信任网站列表中,并为受信任网站提供一些关闭的权限(出于非常好的原因)。 例如,初始化和编写未标记为安全的ActiveX控件的能力等。

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

FTP?如果必要的话,包装成Java小程序,ActiveX或其他任何您想要的东西。

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

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





相关问题
热门标签