Получение изображения по гиперссылке, а не из папки, чтобы заполнить мой элемент управления Repeater - PullRequest
0 голосов
/ 08 апреля 2009

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

http://www.erate.co.za/imgGrab.aspx?Id=99

Какие изменения кода я должен сделать, чтобы мой код посмотрел на мою гиперссылку для изображения, а не на папку "фото"?

Загрузка моей страницы

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string sBasePath = System.Web.HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"];
            if ( sBasePath.EndsWith("\\"))
                sBasePath = sBasePath.Substring(0,sBasePath.Length-1);

            sBasePath = sBasePath + "\\" + "pics";

            System.Collections.Generic.List<string> oList = new System.Collections.Generic.List<string>();
            foreach (string s in System.IO.Directory.GetFiles(sBasePath, "MyPicture.jpg"))
            {
                //We could do some filtering for example only adding .jpg or something
                oList.Add( System.IO.Path.GetFileName( s ));

            }
            repImages.DataSource = oList;
            repImages.DataBind();
        }

    }

Мое событие ItemDataBound для моего повторителя (называется repImages)

 protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem ||
            e.Item.ItemType == ListItemType.Item)
        {
            string sFile = e.Item.DataItem as string;

            //Create the thumblink
            HyperLink hlWhat = e.Item.FindControl("hlWhat") as HyperLink;
            hlWhat.NavigateUrl = ResolveUrl("~/pics/" + sFile  );
            hlWhat.ToolTip = System.IO.Path.GetFileNameWithoutExtension(sFile);
            hlWhat.Attributes["rel"] = "imagebox-bw";

            Image oImg = e.Item.FindControl("imgTheImage") as Image;
            oImg.ImageUrl = ResolveUrl("~/createthumb.ashx?gu=/pics/" + sFile + "&xmax=100&ymax=100" );


        }

    }

Etienne

Ответы [ 2 ]

1 голос
/ 08 апреля 2009

Если я правильно понимаю, это многогранная проблема:

а. Вы хотите загружать изображения из интернет-URL, а не из локальной папки. Это означает, что у вас должен быть какой-то способ перечисления файлов, доступных по удаленному URL. Если вы посмотрите на проблему объективно, вы поймете, что единственное отличие между извлечением изображений из удаленного местоположения и из вашей локальной системы состоит в том, что файлы легко перечисляются с использованием класса DirectoryInfo. Метод GetFiles здесь возвращает массив FileInfo, и вы можете получить фактическое имя файла для каждого из них, используя свойство FileName. В общем, вам нужен список строк, которые сопоставляются с местоположением файла.

б. Перечисление файлов только из удаленного расположения зависит от многих факторов, таких как протокол, который вы используете для получения этого списка. Если вы используете HTTP, и мы можем предположить, что у вас есть некоторый контроль над сервером в этом месте, то URL должен в первую очередь поддерживать просмотр каталогов. Затем вам нужно будет проанализировать этот обслуживаемый список каталогов (который является нестандартным и специфичным для сервера) и загрузить все доступные URL-адреса изображений в виде строк. Затем вы можете заполнить свой репитер этим списком. См. это обсуждение для возможного решения.

Если сервер поддерживает FTP, то ваша работа упрощается, поскольку вы можете перечислять изображения с помощью методов WebRequestMethods.Ftp.ListDirectory или WebRequestMethods.Ftp.ListDirectory.

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

д. Однако, если список изображений, доступных в Интернете, является статическим, и у вас уже есть эта информация, вы можете просто загрузить этот список в виде списка строк и установить свойство src каждого элемента управления Image в этот список. Однако миниатюры будут оставаться проблемой, если только вы не можете загрузить создатель миниатюр (обработчик HTTP) по этому URL-адресу, чтобы файлы извлекались локально для манипуляции и миниатюры предоставлялись вам автоматически.

0 голосов
/ 08 апреля 2009

В шаблоне повторителя есть тег <img>. Если вам нужно программно установить источник, сделайте его runat="server".

...