我需要通过我的Flex应用程序将一个非常大的文件上传到我的服务器,我发现Flex Filereference upload()似乎能够处理它。 upload()方法是否将'stream'上传到servlet,或者它是否发送整个ByteArray(据我所知,ByteArray将包含整个文件内容,因此> 1Gb文件将充斥我的内存)。 / p>
我还没有找到其中一个的确认。看来flex.net.FileReference源代码是flash的一部分,而不是开源flex,所以我不能看一眼。
任何人都可以在向服务器发送文件内容时确认或拒绝使用整个byteArray吗?
由于
答案 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对于任何文件上传来说太多了 - 无论是否闪存。