Вопрос

У меня есть приложение winforms, которое хранит содержимое файлов в базе данных. Сохраненные файлы могут быть любого типа (word, excel, PDF, text, image ...), пользователь может выбрать практически любой тип файла для загрузки.

Затем пользователь может запросить базу данных, найти файл и затем открыть его.

У меня нет проблем с извлечением байтового массива из базы данных в виде потока или байтового массива.

В идеале я бы мог отображать файл напрямую из байтового массива или потока; на данный момент я сохраняю его как временный файл, а затем открываю его с помощью:

Process.Start(fileName);

Как я могу отобразить файл со связанным приложением из любого байтового массива или потокового файла?

Это было полезно?

Решение

В Windows ваш единственный вариант - делать именно то, что вы делаете. Outlook, Internet Explorer, Firefox, все это делают

Другие советы

Может быть, вы хотите немного изучить файл с отображением в памяти.

вы можете попытаться открыть каталог, содержащий его, но это будет то же самое, что вы делаете сейчас ... если соответствующее приложение известно ОС, тогда проблем не будет ..

Если вы сохраняете имя файла в БД вместе с потоком байтов, вы можете определить тип файла по расширению. В этом случае есть два варианта:

<Ол>
  • Используйте реестр, чтобы определить, какое приложение использовать. Подробнее об этом читайте в байтах. .com .
  • P / Invoke SHGetFileInfo , чтобы определить, какое приложение использовать.
  • Примечание: . Обе опции по-прежнему должны записывать данные файла во временный файл на диске для его загрузки.

    Лично я думаю, что то, что вы делаете, - это, пожалуй, самый простой вариант (если вы не хотите предоставлять специальные средства просмотра для определенных типов файлов и т. д.)

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top