Просмотр сетевых файлов в Asp.Net MVC5 - PullRequest
0 голосов
/ 04 марта 2019

Я внедряю систему, в которой пользователь может загружать любое количество документов практически любого типа файла, которые будут связаны с «рабочим элементом».По сути, пользователь может создать задачу, известную как рабочий элемент, и прикрепить к ней любое количество файлов.Я реализовал компоненты для обработки самого рабочего элемента, загрузки файлов, управления файлами (редактирования и удаления), но у меня возникают проблемы с просмотром файлов.

Когда пользователь загружает файл,Файл сохраняется в сетевой папке.Все пользователи имеют доступ на чтение ко всем файлам в каталоге.Путь к файлу сохраняется в базе данных, доступ к которой осуществляется через Entity Framework.

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

В частности, я пытался:

  • Создание гиперссылки и добавление пути к файлу в теге href, но это пытается открыть путь к файлу относительно приложениярасположение на веб-сервере.По сути, он добавляет путь к файлу к текущему URL.

    • Пример:

      • href="@Path.Combine(item.PATH, item.NAME)"
    • Вывод:

      • href="\\server\myapp\item\3\test.jpg"
      • Но когда я нажимаю на этот якорь, он открывается относительно моего текущего URL.
  • Создание контроллера для потоковой передачи файла через WebClient, но это работает только для определенных типов файлов.

Итак, есть ли способ открыть какой-либо файл из MVC, либо через браузер, либо открыв его на клиентском компьютере?

1 Ответ

0 голосов
/ 04 марта 2019

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

Я добавил в свой контроллер действие для его загрузки из сетевого расположения:

// GET: Viewer/File
[HttpGet]
public FileResult Download(string path)
{
   byte[] fileBytes = System.IO.File.ReadAllBytes(path);
   string fileName = Path.GetFileName(path);
   return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

Взято из этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...