2011-10-27 11 views
2

Flexのファイルアップロードのハックを知っている人はいますか?マルチパートフォームの投稿を通じて、認証されたWebサービスにファイルをアップロードできますか? In this bug report from the Adobe site、ユーザレポート:認証されたファイルのアップロードのためのFlexハック

Flashが Javascriptが

はこれまでのところ、私は、このようなハックを作ることができないしてきたハッキン​​グを経由して、この機能だけで動作するかどうかクロスブラウザの互換性はありません。私は次に何をすべきか分からない。ここで

答えて

1

は最終的に、これは私のために働いていたものです(すべてが失敗したか、不可能であった)私がこれまで試したものです。マルチパートファイルの代わりにバイトストリームを受け入れるようにWebサービスを修正しました。その後、私はURLLoaderを使ってバイトをサービスにアップロードしました。

private var fileReference:FileReference; 

public function loadFile() 
{ 
    fileReference.addEventListener(Event.COMPLETE, fileLoaded); 
    fileReference.load(); 
} 

private function fileLoaded(evt:Event):void{ 
    fileReference.removeEventListener(Event.COMPLETE, fileLoaded); 
    startUpload(); 
} 

public function startUpload():void { 

    var xml:String = // xml to post along with the file ; 
    var url:String = // url to the web service 

    var bytes:ByteArray = new ByteArray(); 
    bytes.writeUTFBytes(fileReference.name); 
    bytes.writeUTFBytes(xml); 
    bytes.writeBytes(fileReference.data); 
    bytes.position = 0; 

    var urlLoader:URLLoader = new URLLoader(); 
    var request:URLRequest = new URLRequest(url); 
    request.data = bytes; 
    request.method = URLRequestMethod.POST 
    request.contentType = "application/octet-stream"; 
    urlLoader.addEventListener(Event.COMPLETE, uploadComplete); 
    urlLoader.addEventListener(flash.events.IOErrorEvent.IO_ERROR, uploadError); 
    urlLoader.load(request); 
} 

private function uploadComplete(e:Event):void { 
    // handle success 
} 

private function uploadError(e:Event):void { 
    // handle failure 
} 
関連する問題