Открытие файлов FileTable в С#/.net 4

У меня есть таблица файлов, содержащая множество различных типов документов (.doc;.pdf;.xls и т. д.).

Я пишу небольшое веб-приложение (С#/.net 4) для поиска. Поиск отлично работает, используя полнотекстовый индекс с файловой таблицей для поиска контента.

Но я изо всех сил пытаюсь найти в своем приложении способ, чтобы результаты поиска отображались в виде ссылок, которые могут запускать рассматриваемый документ? И просто обрабатывать разные типы файлов? (Предположим, что на клиенте установлены Word/Adobe/Excel и т. д.)

Благодарен за любой совет.


person user1918525    schedule 20.12.2012    source источник


Ответы (1)


Вам нужно будет написать собственный обработчик страницы для потоковой передачи байтов клиенту с соответствующими заголовками HTTP. Вам нужно будет решить, поддерживать ли встроенный просмотр (открыть в браузере — Content-Disposition: inline) или внешний просмотр с помощью вложения (например, Content-Disposition: attachment).

Response.AddHeader("Content-Disposition", "attachment; filename=example.pdf");

Если вы используете ASP.NET MVC, вы можете использовать FileResult, чтобы упростить этот процесс, но создание собственного обработчика не сильно отличается.

public FileResult Download()
{
    byte[] fileBytes = ...; // from FileTable
    string fileName = "example.txt";
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

Лучший подход к обработке различных типов MIME (PDF, DOC, XLS) — это статическое определение поддерживаемых типов файлов или динамическое чтение IIS и назначьте соответствующий HTTP-заголовок Content-Type.

Response.ContentType = "application/pdf";
person SliverNinja - MSFT    schedule 03.01.2013
comment
очень полезно - спасибо - использовать это в сочетании со столбцом file_stream таблицы файлов для получения данных и фактически использовать Response.BinaryWrite для открытия файла в браузере. Спасибо! - person user1918525; 04.01.2013