Варианты хранения пути к файлу компонента в базе данных - PullRequest
1 голос
/ 08 мая 2011

У меня есть набор файлов (которые по сути являются файлами «.exe»), которые я позволяю пользователям загружать с моего сайта.Чтобы получить более четкую картину, взгляните на скриншот this (это просто академический проект).Теперь у меня есть привилегия администратора, с помощью которой я могу загрузить новый файл программного обеспечения в папку (componentsFolder) в корень моего веб-сайта и одновременно добавить путь к файлу в таблицу базы данных.

Ядля этого используйте следующий код:

string componentRelativeFilePath = @"/ComponentsFolder/" + ComponentName;

Я сохраняю путь к файлу в следующем формате в файле базы данных: / ComponentsFolder / FileName.exe

В чем разница между хранением файлов в следующих форматах?

  1. / ComponentsFolder / FileName.exe
  2. \ ComponentsFolder \ FileName.exe
  3. ~ / ComponentsFolder /FileName.exe
  4. ~ \ ComponentsFolder \ FileName.exe

Я использую server.mappath для извлечения файла из корневой папки.

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

1 Ответ

1 голос
/ 08 мая 2011

В терминах Asp.Net давайте предположим, что вы установили путь к изображению как "/Image/pic1.jpeg", поэтому изображение будет искать в папке Image, расположенной в корне веб-сайта, и в этой папке pic1.jpeg. Если вы в качестве источника изображения установили «~/Image/pic1.jpeg», в этом случае файл изображения будет считан из папки Image, которая находится непосредственно под корнем веб-приложения, независимо от того, где на веб-сайте находится страница. расположен. Но '~/' это можно использовать только с серверными элементами управления. Если путь «../Image/pic1.jpeg», в этом случае папка «Изображение» ищется в папке текущей веб-страницы.

Согласно моему мнению, путь хранения в формате "~/Image/" является лучшим выбором с точки зрения Asp.Net.

Надеюсь, я отвечу на ваш вопрос.

...