从图像ID生成下载代码

时间:2014-10-30 12:52:13

标签: c# asp.net

我有一个列表视图,列出了我数据库中的所有图像。我的数据库中的图像表包含ID(主键)和FileExtension(.jpg,.png,.gif)等。在每个listview项目中,我将有一个下载图标,点击后需要将正确的图像下载到用户的浏览器。这看起来很简单,如果他们点击ID为2的图像的下载图标,他们将下载2 [FileExtension],但我不知道如何编码。

这是我的aspx的相关位:

<asp:ImageButton Runat="server" ID="ibtDownloadImage" ImageUrl="img/downloadIcon.png" />

它目前是一个ImageButton控件,但如果需要它可以更改。

这是该页面背后的代码:

protected void Page_Load(object sender, EventArgs e)
    {

DataClasses1DataContext PiccyPic = new DataClasses1DataContext();

        var images = from i in PiccyPic.Images
                     select i;

        lvwImages.DataSource = images;
        lvwImages.DataBind();


    }

    public string FileName { get; set; }


    protected void ibtDownloadImage_OnClick(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)sender;
        String imgURLtoDownload = sender.CommandArgument;

        Response.TransmitFile(imgURLtoDownload);
    }

你可以看到我没有填写最后一行,因为我不知道在那里放什么来引用ID和FileExtension。

以下是每个listview项目的外观。使用#Eval语句从数据库中检索图像,图像标题,图像描述,上传和下载。

通过执行

检索图像
<img src = "img/uploads/<%#Eval ("ID") %><%#Eval ("FileExtension") %>" />

1 个答案:

答案 0 :(得分:1)

为什么在Page_Load中调用ibtDownloadImageDefine(sender, e);?我想你可以删除这一行。

您需要的是使用 OnClick 方法,以便在单击按钮时执行操作。 然后,对于要下载的图像的URL,您可以绑定 CommandArgument

<asp:ImageButton Runat="server" ID="ibtDownloadImage" OnClick="ibtDownloadImage_OnClick" ImageUrl="img/downloadIcon.png" CommandArgument='<%#Eval ("ID") %> + "|" + <%#Eval ("FileExtension") %>' />

并在代码behing中实现 OnClick 方法,例如:

protected void ibtDownloadImage_OnClick(object sender, EventArgs e)
{
   ImageButton img = (ImageButton)sender;
   String[] argument = img.CommandArgument.Split(Convert.ToChar("|"));

   String ID = argument[0].ToString(); 
   String FileExtension = argument[1].ToString();

   String imgURLtoDownload = "img/uploads/" + ID + FileExtension; 

   Response.TransmitFile(imgURLtoDownload);

}

希望它有所帮助。