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