Как получить файлы в папке App_Data

1

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

Проблема в том, что файлы могут быть доступны напрямую через URL-адреса. Например, если я помещаю iamge в папку с именем: img, тогда люди могут легко получить к нему доступ, например, этот URL: http://domain.com/img/photo.jpg

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

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

Например: я не могу получить изображение профиля пользователя и отобразить его на странице...

База данных SQL: Изображение 174551

.aspx:

<asp:Image ID="imgProfile" runat="server" Width="150" Height="150" ToolTip="Profile Picture" />

С# код в событии Page_Load:

   //Get name and path and save to ProfilePicture object
   //.....
   imgProfile.ImageUrl = ProfilePicture.path + ProfilePicture.name;

Браузер (Chrome) сказал:

Not allowed to load local resource: file:///C:/users/..../App_Data/User/userPicture/1/photo.JPG localhost:55700/Modules/User/Account/ProfilePicture.aspx:196
Failed to load resource: the server responded with a status of 404 (Not Found) 

Итак, что является лучшим решением здесь, похоже, что я должен поместить их в базу данных...

  • 1
    Это имеет смысл, не так ли? Вы не хотели, чтобы он был доступен через URL, а переадресация URL - это все, что делает <asp:Image> .
  • 0
    И в любом случае вы не должны использовать Server.MapPath здесь.
Показать ещё 3 комментария
Теги:
webforms

1 ответ

0

AppData - это системный каталог, зависящий от пользователя.
его можно найти в c:\users\[username]\appdata
вы должны быть осторожны с тем, к чему обращается приложение fordata forlder IIS, поскольку он, вероятно, работает под другим пользователем, чем ваш рабочий стол
Теперь, когда содержимое appdata доступно на вашем веб-сайте, это очень плохая практика.
правильный способ сделать это, и если вы настаиваете на скрытии изображений, вы должны создать обработчик (.ashx), который будет считывать файл изображения и возвращаться обратно.

  • 0
    Пожалуйста, предоставьте пример обработчика (как он получает файл из папки, чтобы я мог поместить файлы в другую папку, а не в app_data), эта концепция для меня совершенно новая.
  • 0
    Сэму не нужно приводить пример, множество уже есть на сайте. Гугл за это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню