Подтвердить что ты не робот

Изображения, которые находятся в папке 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>

Это кажется простым, но оно не показывает изображение.

4b9b3361

Ответ 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.

Надеюсь, что это поможет.