Изображения, которые находятся в папке App_Data, не отображаются в браузере
Когда я устанавливаю свойство URL-адреса изображения в asp-элемент управления изображением, находящийся в папке App_Data, изображение отображается в режиме просмотра страницы, но не в браузере.
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>
Это кажется простым, но оно не показывает изображение.
Ответы
Ответ 1
Папка App_Data
- это специальная папка, зарезервированная для данных, таких как файлы базы данных и т.д., и НЕ будет выводить содержимое в Интернете. Это по дизайну, преднамеренному и не может быть изменено (насколько я знаю).
Ваши изображения определенно не входят в подпапку App_Data
- помещают их в папку /images
или что-то более подходящее.
Ответ 2
Изображения никогда не должны храниться в папке App_Data
. Это зарезервировано для файлов, которые никогда не должны обслуживаться непосредственно пользователю, например, файлы базы данных .mdb и т.д.
Я бы создал папку /Resources
или /Resources/Images
с корнем сайта.
Ответ 3
Я не согласен. При скрытии изображений в папке App_Data и создании собственного HTTP-обработчика вы защищаете свои изображения и можете добавлять текст авторских прав и т.д. На изображения перед их показом.
Я делаю это, когда у меня есть фотографии с высоким разрешением, и я не хочу, чтобы все были доступны, и чтобы http-обработчик уменьшил изображение и надел какой-то авторский текст. Отлично!
Ответ 4
Хорошо, время сделать невозможное... Хотя вы не можете загружать изображения непосредственно из папки app_data, вы можете написать свой собственный обработчик http, который будет считывать файл изображения из папки app_data и отправлять его обратно клиенту. Это будет работать, но в целом данные предназначены для данных, которые может читать только ваше приложение. Имея обработчик, считывающий данные, вы все равно можете вернуть эти изображения.
Но это плохая практика, и если вы будете работать на меня, вас немедленно уволят!
Ответ 5
Содержимое из папки App_Data может быть подано, но не напрямую.
Прямой доступ невозможен и косвенный не рекомендуется. Это намеренно.
однако добавление виртуального пути может сделать это.
Смотрите question
Я думаю, что первая тройка отвечает вашей цели.
Храните изображения в папке ресурса как глобальные, так и локальные, а также специальные папки, и доступ к содержимому может выполняться программно.
Ответ 6
Это зависит!;)
Есть хорошие причины для сохранения изображений в App_Data
. В ситуациях, когда ваши пользователи могут загружать свои файлы или логотипы, они будут защищать эти файлы, а не делать их доступными для других пользователей или быть общедоступными.
Самое главное, это единственный способ иметь разные файлы на один экземпляр сервера/развертывания.
При развертывании приложения вы можете защитить эти файлы, загруженные пользователями на экземпляр сервера, включив "Исключить файлы из App_Data" в конфигурации развертывания.
Если вы хотите получить доступ к этим файлам с помощью url, используйте обработчик загрузки, например файл downloadfile.ashx.
Надеюсь, что это поможет.