2008-12-13 70 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,在文件中收集一個問題沒有發送的文件。 ..發送的字節在哪裏?