我需要一种简单的方法,让用户一次上传多个文件(即我需要允许用户上传文件夹)。我不希望让用户压缩文件。
如果可能的话,我更愿意避免使用闪存或其变体。我正在寻找一个直接使用JavaScript / HTML的解决方案。请注意,这排除了“通过HTTP上传多个文件的最佳客户端浏览器库是什么?” 的答案。
我需要一种简单的方法,让用户一次上传多个文件(即我需要允许用户上传文件夹)。我不希望让用户压缩文件。
如果可能的话,我更愿意避免使用闪存或其变体。我正在寻找一个直接使用JavaScript / HTML的解决方案。请注意,这排除了“通过HTTP上传多个文件的最佳客户端浏览器库是什么?” 的答案。
您无法仅用 HTML 和 Javascript 完成此操作。我建议尝试使用Fancy Upload,这是一个支持多文件上传的 MooTools 插件。它使用JavaScript和Flash的混合方式,但具有优雅降级的效果。它适用于所有主流浏览器,包括IE6,还可以下载Flash 10兼容版本(尽管演示尚未更新)。
更新(2012年11月26日):
使用valums或blueimp文件上传器可以实现多文件上传。
对于递归目录上传,最好的解决方案是使用Chrome 11新的文件夹上传API。如果使用供应商前缀,似乎Firefox也能使用它。
如果您想避免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