FileReference.upload非异步?

时间:2014-02-03 22:43:28

标签: flex asynchronous upload filereference

我有点像一个弹性菜鸟,但我无法在任何地方找到这个问题,或者是一个正确的解决方法。我已经习惯了GET / POST和网络互动,但是我很擅长使用mxml等。见下面的功能。

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

基本上,这完全符合我的需要,但有一个例外。对.upload的最终调用是异步的,所以我留在当前页面上,但它在后台调用上传URL。我希望它像表单一样,实际上使用POST数据导航到上传URL。我觉得这应该是一个简单的解决方案,但我有点抛弃其他人的flash代码并需要一些建议。

提前致谢!

1 个答案:

答案 0 :(得分:0)

因为它是异步的,所以无法像在Html表单中那样从UI实现重定向。作为一种解决方法,您可以将监听器添加到uploadFileRef

uploadURL = "someurl";

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

导航网址会将您带到目标网址。我不知道你将如何获得uploadURL,我假设它是你上传文件的网址。