在Flex中上传大于100MB的文件

时间:2011-01-31 12:01:09

标签: flex file-upload

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

我有这些可能的选择:

  • 使用FileReference Flex类,不建议用于大于100Mb的文件,并希望应用程序不会崩溃。

  • 将给定文件切片为小部分,然后发送它们。对我来说,这似乎是一个非常严厉的决定。

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

如果答案不是,那么同样的东西是否有一些第三方库?

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

编辑:如果我将文件切成部分,它们应该有多大(适当的哈希检查)?

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

HTTP并非设计用于传输此类大型文件,因此我建议您查看文件传输的其他方法,例如FTP。

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

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

答案 2 :(得分:1)

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