【问题标题】:Upload file larger than 100MB in Flex在 Flex 中上传大于 100MB 的文件
【发布时间】:2011-06-18 13:07:58
【问题描述】:

我想上传大于 100 MB 的本地文件,然后将其发送到删除 Java 服务器。

我有这些可能的选择:

  • 使用FileReference Flex类,100Mb以上的文件不建议使用,希望应用不要崩溃。

  • 将给定文件切成小块,然后发送。对我来说,这似乎是一个相当苛刻的决定。

问题:是否有一些 Flex 库允许发送大于 100Mb 的文件?

如果答案是否定的,是否有一些 3rd 方库用于相同的东西?

如果没有,是否有一些用于“切片”文件并将它们异步发送到服务器的第三方库?

编辑:如果我将文件分成几部分,它们应该有多大(用于正确的哈希检查)?

【问题讨论】:

  • 我认为推荐不是因为任何与 Flash 相关的限制,而仅仅是因为通过 POST 发送 100MB 可能会在许多服务器上中断(如果它确实中断,让它崩溃更烦人100+ MB 比 20MB..)。

标签: apache-flex file-upload


【解决方案1】:

HTTP 不是为传输如此大的文件而设计的,因此我建议您研究其他文件传输方法,例如 FTP。

我知道有人尝试使用套接字创建FTP Flex client,但我认为该项目遇到了技术限制,无法完全完成。

如果可能的话,我强烈建议您重新考虑您的业务需求。

【讨论】:

    【解决方案2】:

    如果 flex fileReference 无法打开大于 100mb 的文件,您可以通过 ExternalInterface 使用 HTML/Javascript 打开它们。获得文件后,您可以将其拆分成块并逐位发送到 Flex(可能通过 Base64 编码)或直接从 HTML/JS 上传。虽然我不知道 HTML 是否可以打开大于 100mb 的文件。

    【讨论】:

      【解决方案3】:

      首先,File 的 FileReference 不允许您拆分文件,它允许您一次读取所有数据,它不允许流式传输。在没有任何第三方库的情况下上传大于 100mb 的文件效果很好,但是问题发生在服务器端,通常 ASP.NET 或 Tomcat 服务器需要更大的超时才能接受更大的文件。

      通常在 ASP.NET 服务器上上传(对于基于 Java 的服务器也是如此),脚本执行时间不考虑上传时间,通常在脚本上传之前超时。如果上传时间超过 10 分钟并且脚本执行超时时间少于 10 分钟,那么无论您选择哪种客户端库,您都将永远无法上传文件。

      如果您想将文件分成更小的部分,您可以选择 silverlight,您可以考虑 silverlight 内置的 md5 哈希。

      【讨论】:

      • 谢谢。你告诉我我对问题的误解 - 我认为文件会损坏,但这不是问题。在我的测试中,将 1Gb 文件发送到本地网络中的机器,没有问题。这意味着 Flex FileReference 可以处理大小,POST 请求是问题所在。由于我们是服务器端的开发者,我们会尽量为此类请求设置更大的超时时间。
      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 2021-06-09
      • 2011-08-14
      • 2019-04-23
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多