2008-12-13 32 views
2

我使用一个基本的Post将数据发送到Django服务器。Flex HTTPservice和POST,发送文件?

该数据由flex组件动态创建的base64编码的640 * 380 PNG图像组成。

<mx:HTTPService id="formSend" showBusyCursor="true" 
    useProxy="false" url="http://127.0.0.1/form/" 
    method="POST" result="formSentConfirmation(event)" fault="formSendingFailed(event)"/> 



private function sendForm(url:String, message:String, meteo:Number):void { 
    formSend.url = url; 
    var params:Object = { message: message, image_data: getEncodedImage() }; 
    snapButton.label = "sending ..."; 
    formSend.send(params); 
} 

在服务器端,我可以看到的数据是在request.POST 不request.FILES。这意味着图像不会作为具有multiencode HTTP的文件发送。

  1. 我会在真正的服务器上遇到麻烦吗?因为urlencoded POST var的限制是200k。

  2. 如何使HTTPservice作为文件发送数据?

  3. 任何其他解决办法?

感谢

回答

0
  1. 也许,是的。这取决于您是否对文件大小施加了硬性限制,以及目标页面如何处理请求。

  2. 我不认为这是真的有可能在目前。

  3. 阅读this。 FileReference是上传文件的推荐方式。

+0

FileReference确实是从Flash中上传文件的正确方法。 – Herms 2009-02-03 16:38:19

2

发现一些有趣的事情,我们可以挖掘它。使用这样的:与好

var urlLoader:URLLoader = new URLLoader(); 
    urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
    urlLoader.data = _img.data; 
    urlLoader.addEventListener(Event.COMPLETE,LoadedComplete); 

    var request:URLRequest = new URLRequest("www.url.com?toto=toto"); 
    request.method = URLRequestMethod.POST 
    request.contentType = "multipart/form-data"; 
    request.data = _img.data; 
    request.requestHeaders = new Array(new URLRequestHeader("toto", "toto")); 

    urlLoader.load(request); 

我得到了C#服务器端的东西请求内容长度是不是空的,我在PARAMS和头部有TOTO,在文件中收集一个问题没有发送的文件。 ..发送的字节在哪里?

相关问题