Показать или загрузить файл правильно в ASP.NET MVC3, когда тип файла не текстовый или рисунок
Это моё действие:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
return File(file.Content, file.FileType);
}
GetById
метод возвращает файл из базы данных SQL, когда тип файла - текстовый или графический, все в порядке и файл показан правильно, но когда тип файла отличается от PDF, который показывает какой-то Unicode, так как я могу правильно отобразить файл PDF, или пользователь это скачать?
2 ответа
Второй аргумент File()
Метод должен быть пантомимы. Скажем, ваш файл PDF, он должен работать, если вы сделаете это:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
return File(file.Content, "application/pdf");
}
Для принудительной загрузки используйте File()
перегрузка, которая принимает третий аргумент:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
return File(file.Content, "application/pdf", "some-pdf-file.pdf");
}
Как уже упоминалось выше, вам нужно добавить appklication/pdf, однако мне также нужно, чтобы заголовки были правильными.
public FileResult ShowFile(long Id)
{
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
Response.AppendHeader("Content-Disposition", "inline; filename=CustomInvoice.pdf");
return File(file.Content, "application/pdf", "some-pdf-file.pdf");
}