У меня есть приложение Flex, которое вызывает страницу .aspx на нашем веб-сервере, который создает файл PDF или Excel. Прямо сейчас я использую navigateToURL() для вызова файла, и это отлично работает, когда выходной файл успешно создан. Однако, если есть ошибка или тайм-аут, в Flash-ролике нет способа узнать это.Как я могу предложить пользователю открыть или сохранить файл PDF, возвращенный файлом .aspx?
Вместо этого я пытаюсь использовать 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");
}
FYI, вот блок кода, который в настоящее время выводит 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);
Мне нужно проверить с помощью .NET-разработчика, чтобы узнать, как он настраивает заголовки ответов. Я надеялся, что кто-то сможет помочь мне на конце Flex. –
@ Эрик, почему бы не просто перенаправить пользователя на соответствующий URL-адрес с файлом PDF? –
Мы хотим, чтобы появилось диалоговое окно, которое дает пользователю возможность «Сохранить» или «Открыть». Существующий код отлично работает, когда я использую navigateToURL() с «_self» в качестве цели. Но нет способа отслеживать прогресс и/или завершение. Вот почему я пытаюсь использовать URLLoader.load(). –