ASP.NET MVC образы из виртуального пути - PullRequest
0 голосов
/ 11 ноября 2010

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

 public FilestreamResult GetPicture(string Filename) { 
    Filename = @"C:\SomePath\" + Filename;
        return new FileStreamResult(new FileStream(Filename, FileMode.Open, FileAccess.Read, FileShare.Read), "image/jpeg"));
}

Правда ли, что использование виртуального каталога - это путь, а не путь к файлу? Следующий вопрос: как мне создать этот виртуальный каталог и как получить образ из виртуального каталога?

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 ноября 2010

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

Поскольку вы упомянули asp.net, я бы порекомендовал вам вместо жесткого кодирования корня хранилища вы можете извлечь его в файл web.config.

1 голос
/ 11 ноября 2010

Использование метода в вашем посте сопряжено с большими затратами (все изображения проходят через стек приложений .net). Если вы планируете защитить доступ к изображениям или вам нужен какой-то другой элемент управления уровнями приложения, это может быть приемлемо, но если это стандартные файлы ресурсов, вам нужно будет использовать виртуальный каталог.

Вы настраиваете виртуальный каталог в IIS, щелкая правой кнопкой мыши веб-сайт и выбирая новый виртуальный каталог. Вы дадите этому каталогу имя, например «content», а затем укажите его в расположении изображения (c: \ somepath). Затем вы получите доступ к каталогу через http://yourwebsite.com/content/filename.jpg, и он появится как часть вашего сайта.

1 голос
/ 11 ноября 2010

Использование Server.MapPath("~/someimage.jpg").

См .: http://msdn.microsoft.com/en-us/library/ms524632(VS.90).aspx

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