Flex FileReference upload()和.data ...这会将整个文件加载到内存中吗?

时间:2010-07-12 23:11:49

标签: flex file-upload filereference

我需要通过我的Flex应用程序将一个非常大的文件上传到我的服务器,我发现Flex Filereference upload()似乎能够处理它。 upload()方法是否将'stream'上传到servlet,或者它是否发送整个ByteArray(据我所知,ByteArray将包含整个文件内容,因此> 1Gb文件将充斥我的内存)。 / p>

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

如果未指定参数,则following sample HTTP POST request从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--

它看起来与post request generated by a file input html control类似。所以它不是ByteArray,但浏览器仍然需要在发送之前将文件加载到其内存中; 1GB对于任何文件上传来说太多了 - 无论是否闪存。