1

PDF または Excel ファイルを作成する Web サーバー上の .aspx ページを呼び出す Flex アプリケーションがあります。現在、navigateToURL() を使用してファイルを呼び出しています。これは、出力ファイルが正常にビルドされると正常に機能します。ただし、エラーまたはタイムアウトが発生した場合、Flash ムービーでこれを知る方法はありません。

代わりに URLLoader を使用しようとしています。これにより、HTTP ステータス コードをリッスンし、ロードがいつ完了したかを知ることができますが、URLLoader はビットマップ データを返すだけで、ユーザーに出力ファイルを開いたり保存したりするように促すものは何もありません。とにかくこれを行うことはありますか?

私の ActionScript コードの両方のバージョンを次に示します。

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

2 に答える 2

6

ユーザーがその PSD ファイルを要求した場合、サーバーは「application/octet-stream」ヘッダーを送信する必要があります。

ASP.NET では、次のようになります。

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

こちらもご覧ください: FileReference クラスを使用して Flex でファイルをダウンロードする

于 2009-03-31T18:55:38.597 に答える
0

また、aspx ページで content-disposition を「attachment」に設定します。

于 2009-03-31T18:56:54.367 に答える