Airを使用して、リモートサーバーからファイルを読み込み、既定のアプリケーションでファイルを開こうとします。Flexはリモートサーバーからファイルをダウンロードします
private function getRemoteCourr(PathFichier:String, FileName:String):void {
urlStream = new URLStream();
fileData = new ByteArray();
var urlRemoteCourr:String = new urlManager().urlCourriersPat();
var PathFichierGlob: String = urlRemoteCourr+PathFichier;
var urlReq:URLRequest = new URLRequest(urlRemoteCourr);
urlStream.addEventListener(Event.COMPLETE, function(e:*):void {fileLoaded(e,FileName)});
urlStream.load(urlReq);
}
private function fileLoaded(event:Event, PathFichier:String):void {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
var file:File = File.documentsDirectory.resolvePath(PathFichier);
var fileStream:FileStream = new FileStream();
fileStream.openAsync(file, FileMode.WRITE);
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
file.openWithDefaultApplication();
}
このコード部分では、ファイルがドキュメントディレクトリに作成されていますが、その内容は元のファイルコンテンツではありません。 Word文書の場合は、新しいコンテンツが
Index of /MyApp/LinkMySQL/Customer/Courriers
Name
Last modified
Size
Description
Parent Directory
-
0/
13-Feb-2012 20:24
の代わりに画像やテキストをワード文書です。
Umm。非同期でオープンしていますが、次の行に書き込もうとしています。非同期オープンを行う必要がある場合は、COMPLETEイベントが発生した後にのみバイトを書き込むべきではありませんか?代わりに、同期オープン操作を使用してください。それが問題なのかどうかはわかりません。ただの観察です。 – merv
確かにディレクトリインデックスのように見えますが、あなたがロードしているURLが正しかったですか?私はあなたが最後に実際のファイル名が不足していると思います。 – grapefrukt