views:

6377

answers:

4

Hello,

I use a basic Post to send data to a Django server.

The data consists of a base64 encoded 640*380 PNG image dynamically created by the flex component.

<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);
}

On the server side i can see that the data is in the request.POST not in request.FILES. That means the image is not send as a File with multiencode HTTP.

  1. Will i get into trouble on a real server ? since the limit is 200k for urlencoded POST var.

  2. How to make HTTPservice send the data as a file?

  3. Any other solutions?

Thanks

A: 
  1. Probably, yes. It depends whether you impose a hard limit on the the file size and how the destination page handles the request.

  2. I don't believe it's actually possible at the moment.

  3. Read this. FileReference is the recommended way of uploading files.

inferis
FileReference really is the right way to upload files from within Flash.
Herms
... but only works with the user's interaction not fully automated...
motto
A: 

FileRefrence does not work on HTTPS on mozila, any idea how to do other than that

A: 

Im actually on the same problem, Is there anyway to create a new FileRefence from a Data without using the .browse??? So we could use the .upload method ! ?

+1  A: 

Found something interesting than we can dig on it. Use this:

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);

Well with that i get something in C# server side the request content length is not empty and i got toto in the params and in the header, one problem in files collection there are no files sent ... where are the sent bytes ???