PDF будет загружаться, если использовать «сохранить ссылку как», но не, если пользователь нажимает на ссылку - PullRequest
0 голосов
/ 27 июля 2010

После отправки формы пользователю предоставляется ссылка на PDF-документ.Ссылка прямая на документ, она не передается в потоковом режиме.

Если пользователь щелкает правой кнопкой мыши и выбирает «сохранить ссылку как», документ сохраняется и открывается нормально.Однако, если пользователь просто нажимает на ссылку, браузеру требуется очень много времени, чтобы ответить (я предполагаю, что это 3 минуты), а затем Adobe Reader выдаст следующую ошибку:

"файлповрежден и не может быть восстановлен "

Это в Chrome v5, ASP.NET 3.5, и ссылка возвращается внутри UpdatePanel.

Ответы [ 2 ]

0 голосов
/ 27 июля 2010

У меня раньше была эта проблема, и причиной был сам PDF.

У Adobe есть множество причин для этого: http://kb2.adobe.com/cps/328/328233.html

FWIW, моя проблема с PDf была решена путем открытия PDF в Adobe и перехода к Документу -> Уменьшить размер файла -> Сделать совместимым с Версией 7. (текущая версия - 2)

0 голосов
/ 27 июля 2010

зависит от настроек браузера, настроенных для PDF-ссылок. Если вы измените настройки в broweser, вы получите диалог загрузки.

Mozilla Firefox

  1. Открыть Mozilla Firefox
  2. Нажмите Инструменты, а затем Параметры
  3. В окне параметров выберите Приложения
  4. Выберите тип контента, который вы хотите настроить. Например, если вы хотите изменить способ открытия файла .PDF в Firefox, выберите «Документ Adobe Acrobat».
  5. В разделе Действие измените действие на то, как вы хотите открыть файл. Если вы хотите загружать файлы .PDF, а не открывать их, выберите Сохранить файл.

Internet Explorer:

Вы должны щелкнуть правой кнопкой мыши и щелкнуть "сохранить цель как" для загрузки.

Другой вариант - создать отдельный asp.net и написать приведенный ниже код для загрузки PDF

private void Page_Load(object sender, System.EventArgs e)
{
  //Set the appropriate ContentType.
  Response.ContentType = "Application/pdf";
  //Get the physical path to the file.
  string FilePath = MapPath("acrobat.pdf");
  //Write the file directly to the HTTP content output stream.
  Response.WriteFile(FilePath);
  Response.End();
}
...