Загрузите файл PDF с помощью JQuery / JSON из внешнего веб-сервиса - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть веб-приложение (ASP.NET/C#), для которого мне нужно было бы загрузить файл pdf с сервера на клиентскую сторону, дважды щелкнув строку таблицы.

Моя идея заключалась в том, чтобы использовать JQuery / Ajax для вызова веб-службы. Веб-служба вызывает другую веб-службу (предоставляемую внешним партнером), которая возвращает файл PDF (только этот формат) в виде байта [].
Я читал о нескольких возможностях, где почти во всех случаях файл сохраняется на сервере, а затем возвращается клиенту через HTTPContaxt.Current.Response. В других случаях URL-адрес предоставляется клиентской стороне, а затем клиент перенаправляется на скрытый iFrame с таким URL-адресом.

Как лучше всего передать клиенту файл PDF, чтобы он / она могли открыть или сохранить его локально? Спасибо.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Обычно я просто вызываю внешнюю страницу с простым javascirpt windows.open («GetAttach.ashx? Id = 5»), а затем в этом обработчике код для возврата массива байтов pdf будет

byte[] allegato = GetPdfFromExternalSources;
response.ContentType = System.Net.Mime.MediaTypeNames.Application.Pdf;
response.AppendHeader("content-disposition", string.Format("attachment; filename=\"{0}\"",    filename));
response.BufferOutput = false; //Stream the content to the client, no need to cache entire streams in memory...
response.BinaryWrite(allegato);
response.Close();
0 голосов
/ 09 февраля 2012

Я бы выбрал следующий метод:

  1. клиент нажимает на ссылку в таблице, которая указывает на URL содержит идентификатор запрошенного файла PDF (например, скачать? id = 3)
  2. на стороне сервера сделать запрос третьей стороне, а затем вернуть его пользователю напрямую в байтах. Вы также должны добавить соответствующие заголовки, если вы хотите заставить браузер запрашивать Диалог открытия / сохранения и не открывание файла автоматически 2.

Если запрашиваемые файлы PDF имеют большой размер или имеется много запросов на одни и те же файлы PDF, вы можете внедрить на сервере минимальную систему кэширования и сохранить файлы для дальнейшего использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...