В моем приложении у меня есть структура папок, где вы можете загружать все виды файлов (jpg, png, pdf, txt и т. Д.). Вы можете скачать их напрямую в виде файла или вы можете просмотреть файл в браузере.ASP.Net MVC: отображение файла в браузере, отображение имени файла на вкладке браузера
Чтобы отобразить файл в браузере, я использую на следующие действия контроллера:
public virtual ActionResult FileDisplay(int fileId, bool isFile)
{
var viewmodel = _presenter.GetDocumentDisplayViewModel(fileId, isFile);
return base.File(viewmodel.Data, viewmodel.MediaType);
}
Файл отображается в браузере, как это: вкладка https://i.stack.imgur.com/TXmTy.jpg
Браузер показывает мое имя контроллера " FileDisplay "и (для этого примера) размеры изображения.
Вопрос: Как отобразить имя файла в заголовке вкладки brower вместо имени контроллера? Это для всех типов файлов.
1. Content-Dispostion заголовок
Я нашел несколько постов, где они говорят, чтобы добавить заголовок Content-Disposition в ответ с именем файла:
- Returning a file to View/Download in ASP.NET MVC
- Make a file open in browser instead of downloading it
Но это не сработает.
2. Добавьте имя файла конструктору File
return base.File(viewmodel.Data, viewmodel.MediaType, viewmodel.FileName);
Если я это сделаю, то файл будет загружен вместо отображаемых в браузере.
3. PDF название файла
Я обнаружил, что иногда название вкладки браузера правильно! Если я отображаю PDF-файл в браузере, который имеет название файла (название в свойствах pdf, а не имя файла), верно название браузера: https://i.stack.imgur.com/orAZS.jpg
Может кто-нибудь мне помочь?
Попробуйте изменить «ViewBag.Title» на странице .cshtml. – Nitin
При возврате файла напрямую нет .cshtml-страницы. –
К сожалению, вы правы, я этого не видел. Вы можете попробовать это в своем контроллере «ViewBag.Title». Это может сработать. – Nitin