1

我需要通过我的 Flex 应用程序将一个非常大的文件上传到我的服务器,我看到 Flex Filereference upload() 似乎能够处理它。upload() 方法是否将“流”上传到 servlet,还是发送整个 ByteArray(据我了解,ByteArray 将包含整个文件内容,因此 >1Gb 的文件会淹没我的内存)。

我还没有找到对其中一个的确认。似乎 flex.net.FileReference 源代码是 flash 的一部分,而不是开源 flex,所以我不能偷看。

将文件内容发送到服务器时,任何人都可以确认或拒绝使用整个 byteArray 吗?

谢谢

4

2 回答 2

1

尝试使用 Flash 上传大文件时,将文件加载到内存中并不是您最关心的问题 - 上传本身非常不可靠。根据Flex 的参考, Flash 播放器官方支持上传最大 100 MB 的文件大小。我的经验证实大文件上传经常失败。您可以检查此文件上传组件,以在 chinks 中上传大文件并恢复部分上传。但是,此解决方案还需要在开始上传之前将文件完全加载到内存中。

于 2010-07-14T06:44:47.733 回答
0

如果未指定参数,以下示例 HTTP POST 请求将从 Flash Player 发送到服务器端脚本

  POST /handler.cfm HTTP/1.1 
  Accept: text/*
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7 
  User-Agent: Shockwave Flash 
  Host: www.example.com 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache

  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"

  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg"
  Content-Type: application/octet-stream

  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"

  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--

它看起来类似于文件输入 html 控件生成的 post 请求。所以它不是字节数组,但浏览器仍然需要在发送文件之前将文件加载到内存中;1GB 对于任何文件上传来说都太大了——无论是否闪存。

于 2010-07-13T06:36:15.083 回答