Изображения из папки App_Data не отображаются в браузере

StackOverflow https://stackoverflow.com/questions/1519790

  •  19-09-2019
  •  | 
  •  

Вопрос

Когда я устанавливаю свойство URL-адреса изображения для элемента управления изображением asp, который находится в папке App_Data, изображение отображается в представлении дизайна страницы, но не в браузере.

<form id="form1" runat="server">
<div>
    <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>

Вроде бы все просто, но изображения не отображается.

Это было полезно?

Решение

А App_Data папка — это специальная папка, зарезервированная для таких данных, как файлы базы данных и т. д., и будет НЕТ визуализировать любое содержимое в Интернете.Это задумано намеренно и не может быть изменено (насколько мне известно).

Ваши изображения определенно не относятся к App_Data подпапка - поместите их в /images папку или что-то более подходящее.

Другие советы

Изображения ни в коем случае не следует хранить в App_Data Папка.Это зарезервировано для файлов, которые никогда не должны предоставляться пользователю напрямую, например файлов базы данных .mdb и т. д.

я бы создал /Resources или /Resources/Images папка в корне сайта.

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

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

Ладно, пора сделать невозможное...Хотя вы не можете загружать изображения непосредственно из папки app_data, вы можете написать свой собственный обработчик http, который будет читать файл изображения из папки app_data и отправлять его обратно клиенту.Это был бы обходной путь, но в целом данные предназначены для данных, которые может прочитать только ваше приложение.Имея обработчик, читающий данные, вы все равно можете вернуть эти изображения.

Но это плохая практика, и если бы вы работали на меня, вас бы немедленно уволили!!!

Это зависит!;)

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

Самое главное, это единственный способ иметь разные файлы для каждого сервера/экземпляра развертывания.

При развертывании приложения вы можете защитить эти файлы, загруженные пользователями для каждого экземпляра сервера, включив «Исключить файлы из App_Data» в конфигурации развертывания.

Если вы хотите получить доступ к этим файлам по URL-адресу, используйте обработчик загрузки, например, downloadfile.ashx.

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

Содержимое папки App_Data можно обслуживать, но не напрямую.
Прямой доступ невозможен, а косвенный не рекомендуется. Это намеренно.

однако добавление виртуального пути может сделать это.Видеть это вопрос


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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top