我遇到一个问题,从flash发送一个巨大的(~4MB)数据块到我的java servlet,目前我正在使用URLVariables传输数据,但是它似乎有一个限制(因为它似乎工作,使用较小的数据块),如何抑制此限制,或以任何其他方式,将我的数据提供给我的servlet。
到目前为止我的Flash代码:
var variables:URLVariables = new URLVariables();
variables.name = name_string; //Plenty of these small attributes
variables.data = data_string; //And the huge BLOB
var sendReq:URLRequest = new URLRequest("http://localhost:8080/recieve/");
sendReq.method = URLRequestMethod.POST;
sendReq.data = variables;
var sendLoader:URLLoader;
sendLoader = new URLLoader();
sendLoader.addEventListener(Event.COMPLETE, Handler);
sendLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
sendLoader.load(sendReq);
答案 0 :(得分:0)
首先,所有POST方法在IE中大约有2000多个字符失败(至少在8之前)。
接下来,URLLoader
有一个限制:请参阅Flash/AS3 - is there a limit to the number of simultaneous URLLoader.load() requests?
如果可能的话,尝试将数据分成更小的部分并以这种方式发送。这将消除最大的问题。
答案 1 :(得分:0)
在调查之后,我的早期建议FileReference是一个坏主意,因为BitmapData是在内存中创建的。
我建议您尝试How can I send a ByteArray (from Flash) and some form data to php?
答案 2 :(得分:0)
所以在玩了flash之后,我想出了一个解决方案;
我只是将data_string分解为给定大小的子字符串,然后枚举这些子字符串,并使用URLLoader和part_id传输其中的每一个。
然后,在服务器端通过part_ids完成子字符串的集合。
答案 3 :(得分:0)
这听起来更像是服务器端的问题。检查您的java环境设置并增加允许的最大POST /请求大小。
将数据分成多个部分并单独发送的解决方案可能只有在每个部分小于服务器端限制时才有效。