2009-03-31 1 views
1

私は、Webサーバー上の.aspxページを呼び出すFlexアプリケーションを用意しています。このアプリケーションは、PDFまたはExcelファイルを作成します。今、私はファイルを呼び出すためにnavigateToURL()を使用しています。これは、出力ファイルが正常に構築されたときにうまく動作します。しかし、エラーやタイムアウトがある場合、Flashムービーでこれを知る方法はありません。.aspxファイルから返されたPDFファイルを開くか保存するようにユーザーに促す方法はありますか?

代わりにURLLoaderを使用しようとしています。そのため、HTTPステータスコードをリッスンして、ロードが完了したことを知ることができますが、URLLoaderはビットマップデータを返します。出力ファイル。これを行うためにとにかくありますか?ここで

は私のActionScriptコードの両方のバージョンです:FYI

private function buildFile():void 
{ 
    var variables:URLVariables = new URLVariables(); 

    variables.rptName = "report1"; 

    variables.rptFormat = "PDF"; 

    var request:URLRequest = new URLRequest(); 

    request.url = "/buildFile.aspx"; 

    request.method = URLRequestMethod.POST; 

    request.data = variables; 

    var loader:URLLoader = new URLLoader(); 

    loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, 
             httpStatusHandler); 

    loader.load(request); 
} 


private function buildFile():void 
{ 
    var variables:URLVariables = new URLVariables(); 

    variables.rptName = "report1"; 

    variables.rptFormat = "PDF"; 

    var request:URLRequest = new URLRequest(); 

    request.url = "/buildFile.aspx"; 

    request.method = URLRequestMethod.POST; 

    request.data = variables; 

    navigateToURL(request, "_self"); 
} 

、ここでは現在、PDFやExcelファイルを出力コードのブロックです:

System.Web.HttpContext httpC; 
httpC = System.Web.HttpContext.Current; 
httpC.Response.Clear(); 
httpC.Response.ClearHeaders(); 
httpC.Response.Expires = 0; 
switch (ReportFormat) 
{ 
    case "Excel": Response.ContentType = "application/vnd.ms-excel"; break; 

    case "PDF": Response.ContentType = "application/pdf"; ; break; 

} 

Response.AddHeader("Content-disposition", "attachment;filename=" + fileName);  

BinaryWriter binaryWriter = new BinaryWriter(httpC.Response.OutputStream); 

binaryWriter.Write(result); 

答えて

6

あなたのサーバーは、「アプリケーションを送信する必要がありますユーザーがPSDファイルを要求すると、「/ octet-stream」ヘッダーが表示されます。

Response.ClearContent(); 
Response.ClearHeaders(); 
// with this header user will be promted to open or download file 
Response.ContentType = "application/octet-stream"; 
// with this header, you will suggest to save file with "test.pdf" name 
Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf"); 
Response.WriteFile(Server.MapPath("~/test.pdf")); 
Response.Flush(); 
Response.Close(); 

もここを見て:それはこのようになります。ASP.NETで

Downloading files in Flex using the FileReference class

+0

私は.NET開発者に確認して、彼がどのようにレスポンスヘッダーを設定しているかを調べる必要があります。私は誰かがフレックスの終わりに私を助けることを望んでいた。 –

+0

@エリック、なぜPDFファイルで適切なURLにユーザをリダイレクトしないのですか? –

+0

「保存」または「開く」のオプションをユーザに与えるダイアログを表示させたい。 "_self"をターゲットとしてnavigateToURL()を使用すると、既存のコードが正常に動作します。しかし、進行状況や完了を追跡する方法はありません。そのため、私はURLLoader.load()を使用しようとしています。 –

0

もaspxページの「添付ファイル」にコンテンツ配置を設定します。

関連する問題