Изображения из папки 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>
Вроде бы все просто, но изображения не отображается.
Решение
А 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 можно обслуживать, но не напрямую.
Прямой доступ невозможен, а косвенный не рекомендуется. Это намеренно.
однако добавление виртуального пути может сделать это.Видеть это вопрос
Я думаю, что три лучших ответа служат вашей цели.
Храните изображения в папке ресурсов, глобальной или локальной. Это также специальные папки, доступ к содержимому которых можно получить программно.