Показать или загрузить файл правильно в 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");
    }
Другие вопросы по тегам