Изображения, не решая в веб-приложении asp (c#)

Я работал над веб-приложением asp, которое вовлекает пользователя, регистрирующего детали человека, включая изображение человека. Имя файла деталей/изображения хранится в базе данных SQL с именем файла образа, знаменитым в NVARCHAR столбец, вместо того, чтобы хранить действительный образ в DB.

Я создал каталог C:\Images to which the image files would be stored by the application. Приложение работает правильно в том, насколько оно перемещает изображения в это местоположение, но когда я открываю страницу, которая отобразила бы детали/изображение, которые никогда не представляет изображение.

Я обошел это во время разработки путем хранения изображения в папке, которая была частью проекта, но после выпуска проекта к серверу, приложение отказывается позволять изображению быть сохраненным в любых каталогах в C:\Inetpub\wwwroot\ .

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

Я проверил источник страницы HTML, которая также указывает на корректное местоположение и имя файла:

img id="ctl00_MainContent_CandidateImage" src="C:\Images\applicant11.jpg" alt="Candidate Image" style="border-width:1px;border-style:solid;height:208px;width:208px;" 

Код позади страницы представляет изображение в коде ниже:

// CandidatePhoto filename retrieved from DB.

CandidateImage.ImageUrl = "C:\\Images\\" + CandidatePhoto;

У кого-либо есть какие-либо идеи?

Удачи!

5
задан Klaus Byskov Pedersen 22 March 2010 в 13:46
поделиться

6 ответов

Когда это отображается в браузере, вы фактически говорите ему искать изображение для отображения на диске c: клиента...

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

6
ответ дан 18 December 2019 в 14:44
поделиться

Ваши изображения должны выглядеть примерно так /images/bob.jpg относительно приложения, а не диска ОС, даже если это виртуальный путь ... но изображения не будут на диске C: \ клиента в любом случае.

Если бы у вас был виртуальный каталог Images / в приложении / сайте IIS, и он указывал на C: \ Images на сервере, ваши URL-адреса выглядели бы следующим образом:

CandidateImage.ImageUrl = "~/Images/" + CandidatePhoto;

Чтобы создать подобный виртуальный каталог, см. Здесь

3
ответ дан 18 December 2019 в 14:44
поделиться

Проверьте права доступа к папке на сервере. Возможно, вы скопировали ее с dev-машины с уникальными для вашего компьютера разрешениями, ограничивающими доступ других пользователей.

1
ответ дан 18 December 2019 в 14:44
поделиться

Проблема с вашим изображением заключается в том, что вы ссылаетесь на местоположение на ВАШЕМ компьютере, а не на URL-адрес, связанный с местоположением самого файла. Чтобы браузер мог отображать изображение, он должен иметь доступ к URL-адресу этого изображения. Фактически вы говорите браузеру найти изображение на компьютере пользователя, а не на сервере или в другом месте

1
ответ дан 18 December 2019 в 14:44
поделиться

Вы не можете указать путь «c: \ images», потому что, когда изображение будет визуализировано, браузер будет искать изображение на клиентском компьютере. Вы можете использовать одно из этих двух решений:

  1. Вы можете создать каталог «/ images» на своем веб-сайте и настроить сайт на «олицетворение» какого-либо пользователя, а также установить разрешения для этого пользователя, позволяющие ему писать в эту папку. . И в imageUrl вы поместите что-то вроде этого: "/images/image01.jpg".

  2. Вы можете создать страницу, которая будет отображать изображение для вас, и передать идентификатор изображения в сообщении или строке запроса. Что-то вроде «ImageRender.aspx? ID = 123». И страница загрузит изображение из «c: \ images» и запишет изображение в ответ страницы. А у тебя ImageURL всегда будешь ставить «ImageRender.aspx? ID = [imageID]».

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

1
ответ дан 18 December 2019 в 14:44
поделиться

Спасибо всем за идеи.

Получил, добавив пользователя SERVERNAME \ IUSER_SERVERNAME с разрешениями на чтение / запись в wwwroot / Images

Затем с помощью Server.MapPath ("~ / images") для сохранения изображений в каталог на сервере

Затем просто рендеринг изображений из ("~ / Images") + CandidatePhoto, как и раньше.

Еще раз спасибо!

1
ответ дан 18 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: