【问题标题】:What is the best way to upload a folder to a website?将文件夹上传到网站的最佳方式是什么?
【发布时间】:2010-09-20 05:38:08
【问题描述】:

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

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

【问题讨论】:

  • Diodeus:您应该将其发布为答案。

标签: javascript html file-upload


【解决方案1】:

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


更新(2012-11-26):

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

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

【讨论】:

  • 如果设置了 webkitdirectory 属性,为什么不能上传单个文件和文件夹?奇怪的是,这是一个非此即彼的事情......另外,我可以只上传一个目录还是可以选择具有多个属性集的一对?
  • 这是一个老问题,现在接受的答案已经过时了。请参阅我对这个问题的回答,了解几个可行的解决方案stackoverflow.com/questions/42239663/…
  • valuems AKA Fine Uploader 不再维护github.com/FineUploader/fine-uploader/issues/2073
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果您要避免使用 Flash(可能是 Java?),仅 JS/HTML 的解决方案仍然需要单个文件 inputs,但本质上您将 onchange 事件附加到您的 input,添加一个新的input到DOM时,只要选择文件。

    【讨论】:

    • 是否可以获取特定文件夹中的文件列表,并将其自动输入到输入控件中?
    • 我自己回答了 cmets 的问题:codeproject.com/KB/scripting/search_in_files.aspx
    • 虽然,我发现链接的问题是它需要 ActiveX。到那时,我还不如使用 flash :-/
    【解决方案4】:

    多个文件可以通过valumsblueimp 文件上传器上传。

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

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

    • 这也可以使用Java applet 跨浏览器。然而,这些天安装 JRE 的人的百分比已经很低了 (< 70%)

    【讨论】:

      【解决方案5】:

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

      所以,抛开所有免责声明......

      多年前和几个雇主之前,我们曾经做过一些客户端的东西来实例化 FileSystemObject。它将遍历每个文件并一次将它们传递给服务器。不记得我们是怎么做的细节了:o(

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

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 这适用于多个文件,但不适用于文件夹。见stackoverflow.com/a/13486123/486547
          • “上传文件夹”是什么意思?无论如何都会有文件,包含在文件夹中。
          • 您可以使用基于标准的技术使用文件上传框(即imgur.com/Cl1RB)上传多个文件,但您实际上不能选择文件夹(imgur.com/2dZtS)并递归获取其内容上传。为此,您需要使用 -moz / -webkit 专有的东西。希望有帮助!
          猜你喜欢
          • 2011-10-14
          • 2023-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-13
          • 2019-04-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多