0

I'm a bit of a flex noob, but I couldn't find this question asked anywhere, or a proper workaround. I'm quite used to GET/POST and web interactions, but I'm new to working in mxml's and such. See function below.

private function uploadFileSelect(event:Event):void 
{
    var uploadURL:String = Application.application.parameters.UploadURL;
    var urlStr:String = ExternalInterface.call('window.location.href.toString');
    var queryMap:Object = getQueryParams(urlStr);

    var request:URLRequest = new URLRequest(uploadURL);
    var urlVars:URLVariables = new URLVariables();
    urlVars.appid = queryMap.appid;
    urlVars.str = queryMap.str;
    request.method = "POST";
    request.data = urlVars;

    uploadFileRef.upload(request);              
}

Essentially, this works perfectly for what I need, with one exception. The final call to .upload is asynchronous, so I stay on the current page, but it calls the upload URL in the background. I want it to act like a form and actually navigate TO the upload URL with the POST data. I feel like this should be a simple solution, but I was kind of thrown the task of working on someone else's flash code and need a little advice.

Thanks in advance!

Nate Dellinger
  • 740
  • 5
  • 14

1 Answers1

0

Because it is asynchronous, you cannot achieve redirect from the UI like you do in Html form. As a work around you can add listeners to the uploadFileRef

uploadURL = "someurl";

uploadFileRef.addEventListener(Event.complete, function(e:Event){
  navigateToURL(new URLRequest(uploadURL),'_self')
});

navigate url will tke you to the target url. I do not know how you will get the uploadURL, i'm assuming it is the url at which you have uploaded the file to.

Zeus
  • 6,386
  • 6
  • 54
  • 89
  • Thanks for the help! Combined with [this link](http://marstonstudio.com/2007/10/19/how-to-take-a-snapshot-of-a-flash-movie-and-automatically-upload-the-jpg-to-a-server-in-three-easy-steps/) I just found I think I can even add the image in there as well! – Nate Dellinger Feb 04 '14 at 03:18