0

我不想用我项目中文件夹中的图片填充我的中继器,我想用指向图像所在位置的链接来填充它............

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" );


        }

    }

艾蒂安

4

2 回答 2

1

如果我理解正确,这是一个多方面的问题:

一个。您希望从 Internet URL 而不是本地文件夹加载图像。这意味着您必须有某种方式列出远程 URL 上可用的文件。如果您客观地看待这个问题,您会意识到从远程位置和从本地系统检索图像之间的唯一区别是文件很容易使用 DirectoryInfo 类进行枚举。这里的GetFiles方法返回一个数组,FileInfo您可以使用 FileName 属性获取每个的实际文件名。所以基本上,您需要一个映射到文件位置的字符串列表。

湾。仅从远程位置枚举文件取决于许多因素,例如您用于检索该列表的协议。如果您使用的是 HTTP,并且我们可以假设您对该位置的服务器有一定的控制权,那么 URL 需要主要支持目录浏览。然后,您需要解析提供的目录列表(非标准且特定于服务器)并将所有可用的图像 URL 加载为字符串。然后,您可以使用该列表填充您的中继器。请参阅此讨论以获取可能的解决方案。

如果服务器支持 FTP,那么您的工作会变得更容易,因为您可以使用 WebRequestMethods.Ftp.ListDirectory 或 WebRequestMethods.Ftp.ListDirectory 方法枚举图像。

C。如果要为图像创建缩略图,则必须编写代码来下载每个图像,将其保存在临时位置,然后对其执行尺寸操作。

d。但是,如果 Internet 位置上可用的图像列表是静态的,并且您已经拥有该信息,则可以简单地将该列表加载为字符串列表并将每个 Image 控件的 src 属性设置为该列表。然而,缩略图仍然是一个问题,除非您也可以在该 URL 上上传您的缩略图创建者(HTTP 处理程序),以便在本地检索文件以进行操作,并自动为您提供缩略图。

于 2009-04-08T09:18:24.030 回答
0

在转发器的模板中包含一个<img>标签。如果您需要以编程方式设置源,请将其设为runat="server".

于 2009-04-08T08:43:59.213 回答