Невозможно получить изображение с другого сервера в моем веб-приложении - PullRequest
0 голосов
/ 06 ноября 2019

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

Я пробовал следующие способы записи изображенияпуть, но не удается получить изображение:

C #:

string imagePath = @"http://192.168.10.245/Shared/1.jpg";

ИЛИ

string imagePath = @"file://192.168.10.245/Shared/1.jpg";

ИЛИ

string imagePath = @"\\192.168.10.245\Shared\1.jpg";

ИЛИ

string imagePath = @"192.168.10.245/Shared/1.jpg";

emp_img.ImageUrl = imagePath;

aspx:

  <asp:Image runat="server" ID="emp_img" CssClass="imgstyle" />

Обратите внимание, что изображение помещается в общую папку, которая нормально открывается в проводнике Windows

Пожалуйста, помогите мне решить эту проблему

Я прошел через Это

Спасибо

ОБНОВЛЕНИЕ:

Я создал обработчик изображений для этого:

ImgHandler.ashx:

public class ImgHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "image/jpg";
        string EmpCode = context.Request.Params["EmpCode"].ToString();
        string path = "//192.168.10.245\\Shared\\"+EmpCode+".jpg";
        context.Response.WriteFile(path);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

aspx:

  <img src="ImgHandler.ashx?EmpCode=1" style="max-width:250px; max-height:250px;" />

IЯ все еще не могу получить изображение, пожалуйста, помогите мне написать путь

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Следующий код решил мою проблему:

ashx:

public void ProcessRequest (HttpContext context) {
        try
        {
            context.Response.ContentType = "image/jpg";
            string FileName = context.Request.Params["FileName"].ToString();
            string path = System.Configuration.ConfigurationManager.AppSettings["ProfilePhotoPath"].ToString()+FileName;
            byte[] pic = GetImage(path);
            if (pic != null)
            {
                context.Response.WriteFile(path);
            }
        }
        catch (Exception ex)
        {

        }


    }

    private byte[] GetImage(string iconPath)
    {
        using (WebClient client = new WebClient())
        {
            byte[] pic = client.DownloadData(iconPath);
            //string checkPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +@"\1.png";
            //File.WriteAllBytes(checkPath, pic);
            return pic;
        }
    }

.CS:

emp_img.ImageUrl = "ImgHandler.ashx?FileName=1.jpg";

web. config:

<add key="ProfilePhotoPath" value="\\\\192.168.10.245\\Pic\\"/>
0 голосов
/ 06 ноября 2019

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

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

Вы можете сделать это в WebForms, создав обработчик *.ashx, который принимает путь к файлу как строку запроса, а затем пытается загрузить файл. само по себе, но обязательно очистите входные данные, поскольку они могут использоваться злоумышленниками и злоумышленниками (или идиотами) для получения любого файла, к которому имеет доступ веб-сервер (см .: https://en.wikipedia.org/wiki/Directory_traversal_attack)

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