Как загрузить изображение с сервера в веб-приложение на C # - PullRequest
3 голосов
/ 30 марта 2011

У меня фактически есть приложение Winform C #, которое загружает изображения с моего компьютера C://images/... с объектом Image и функцией Fromfile.

Image.FromFile(Path);

но в моем веб-приложении (ASP)

<asp:Image ID="viewPhoto" runat="server" Width="550px" Height="400px"/>

Я использую атрибут ImageURL.

viewPhoto.ImageURL = Path

Но проблема в том, что он не находит правильный путь, потому что этим путем. Путь будет http://localhost:3656/C://images....

Я хотел бы загрузить изображение непосредственно с моего сервера, чтобы иметь правильный путь для обоих моих приложений (веб-ASP и winform)

Image.FromFile(/images/myimage.jpg)

Это на самом деле не работает, потому что программа не находит ни одной фотографии по этому пути.

Ответы [ 5 ]

8 голосов
/ 30 марта 2011

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

Page.ResolveClientUrl("images/test.jpg");

или для серверной части:

Server.MapPath("images/test.jpg");

Если вы не хотите перемещать изображения в вашу веб-папку, тогда ваш единственный выбор - написать HttpHandler, который будет читать изображения из папки C: \ images и передавать их клиенту. Это также потребует определенных разрешений для пользователя IIS вашего веб-приложения для доступа к какой-либо папке за пределами области действия веб-приложения.

Вы можете увидеть образец HttpHandler здесь: Thumbnailer HTTP Handler

0 голосов
/ 04 апреля 2018

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

<style type="text/css">
#errorImage{
background: url(/path/path/images/image.jpg);
background-size: contain;
height: 100px;
width: 100px;
}
</style>


<div id="errorImage"><div>
0 голосов
/ 30 марта 2011

Поскольку я уверен, что ваш элемент <asp:Image> фактически создает элемент html <img>, который будет инструктировать браузер запрашивать изображение из браузера.

Image.FromFile даст вам объект изображенияна стороне сервера, но он не будет очень полезен для браузера ваших клиентов.

Как сказал @HABJAN, вам нужно сопоставить путь от локального файла до относительного веб-URI и сделать это, вы можете использоватьServer.MapPath.Однако ваши изображения должны быть в папке вашего проекта asp.net, доступной веб-серверу, чтобы он мог обслуживать файл.

Если вы действительно хотите поделиться путями в некоторой общей константеСборка Я предлагаю вам заставить ваше приложение Windows работать с относительными путями и продублировать структуру папок с изображениями как для приложения Windows, так и для веб-приложения.

0 голосов
/ 30 марта 2011

ASP.Net image просто отображает ImageURL в браузер клиента, затем он попытается загрузить это изображение из указанного местоположения, обычно это должен быть ресурс, доступный через ваш веб-сайт.

Попробуйте переместить вашизображения внутри вашего веб-корня, тогда вы можете получить к ним доступ как:

viewPhoto.ImageUrl = "~/images/yourimage.jpg";
0 голосов
/ 30 марта 2011

Используя путь, который вы используете сейчас (http://localhost:3656/C://images....), приложение будет искать папку / C: // images ... в каталоге вашего приложения на веб-сервере. Я считаю, что вы должны создать каталог изображений в вашем приложенииоттуда папку и сервер изображений, чтобы вы могли ссылаться на изображения, используя относительный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...