colelaus Ответов: 1

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


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

Я думаю, что моя проблема заключается в том, что pdf-файлы находятся на общем сетевом ресурсе и не могут быть доступны непосредственно пользователю. Я обнаружил, что если файлы были непосредственно доступны ( например mywebsite.com/PdfFile.pdf), имя, загруженное пользователю, совпадает с именем pdf-файла, и все возможности загрузки есть. Однако все мои файлы находятся на общих сетевых ресурсах, и я должен использовать страницу. aspx для обслуживания pdf-файла ( например mywebsite.com/PdfServer.aspx?file=PdfFile.pdf). Когда я это делаю, отображаемая страница называется в честь файла. aspx, и я не могу напрямую загрузить этот файл в формате pdf.


Любая помощь, которая будет направлена в правильном направлении, будет оценена по достоинству.

Ларри

Что я уже пробовал:

Я действительно понял, что могу сохранить страницу .aspx в формате PDF, но это не очень хорошее решение.

Я действительно нашел какой-то скрытый код, который отображал PDF-файл на отдельной странице:
Response.Redirect("~PdfFile.pdf");

Это отвечает всем моим требованиям, таким как отображение правильного имени и наличие возможности загрузки. Однако это, по-видимому, работает только тогда, когда PDF-файл находится в папках веб-сайта. Мои файлы находятся на сетевых дисках, поэтому для их передачи мне приходится использовать страницы aspx или ashx.

Я также попытался использовать что-то вроде следующего, и это отлично сработало, документ отображался в формате PDF с возможностью загрузки...
<asp:HyperLink ID="lnkPDF" runat="server" NavigateUrl="~PdfFile.pdf" Target="_blank">View PdfFile.pdf</asp:HyperLink>

но когда я изменил NavigateURL на свою страницу aspx, обслуживающую PDF-файл, файл будет отображаться, но с расширением aspx и ни одной из доступных функций загрузки или печати.

Я играл с заголовками TransmitFile, WriteFile, contentTypes и Content-Disposition (attachment &inline) безрезультатно.

1 Ответов

Рейтинг:
2

ZurdoDev

Вот как вы даете ему имя файла.

Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Большинство браузеров будут использовать его по умолчанию для имени, которое отображается при сохранении.