如何使下载图像链接工作?

问题描述:

我有我的viewdepositslip.aspx这个代码,其中它显示了从所在的文件夹上传的文件都存储在imageurls:如何使下载图像链接工作?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText = "No files uploaded"> 
<Columns> 
    <asp:BoundField DataField="Text" HeaderText="File Name" /> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="lnkDownload" Text = "Download" CommandArgument = '<%# Eval("Value") %>' runat="server" OnClick = "DownloadFile"></asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID = "lnkDelete" Text = "Delete" CommandArgument = '<%# Eval("Value") %>' runat = "server" OnClick = "DeleteFile" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

这是我的图片上传到文件夹代码(此来自客户端,不同的webform)。

protected void UploadFile(object sender, EventArgs e) 
    { 
    string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
    FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName); 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 

这是后面的代码。那么删除按钮功能完美,但我不能使下载链接功能的工作。我在这里错过了什么?

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      string[] filePaths = Directory.GetFiles(Server.MapPath("~/BankDepositUploads/")); 
      List<ListItem> files = new List<ListItem>(); 
      foreach (string filePath in filePaths) 
      { 
       files.Add(new ListItem(Path.GetFileName(filePath), filePath)); 
      } 
      GridView1.DataSource = files; 
      GridView1.DataBind(); 
     } 
protected void DownloadFile(object sender, EventArgs e) 
    { 
     string filePath = (sender as LinkButton).CommandArgument; 
     Response.ContentType = ContentType; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); 
     Response.WriteFile(filePath); 
     Response.End(); 
    } 
    protected void DeleteFile(object sender, EventArgs e) 
    { 
     string filePath = (sender as LinkButton).CommandArgument; 
     File.Delete(filePath); 
     Response.Redirect(Request.Url.AbsoluteUri); 
    } 

此外,我打算看到一旦它显示在gridview中的实际图像。截至目前它有图像网址。

+0

? –

+0

no sir。 @Ganesh_Devlekar –

+0

所以代码永远达不到DownloadFile函数? –

你的代码也应该工作,但出于某种原因它可能不工作,所以尝试像这样:

aspx页面

<asp:LinkButton ID="lnkDownload" runat="server" CommandName="cmd">Download</asp:LinkButton> 

CS页

protected void GridView1_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
     { 
      if (e.CommandName == "cmd") 
      { 
       string filePath = (sender as LinkButton).CommandArgument; 
       Response.ContentType = ContentType; 
       Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); 
       Response.WriteFile(filePath); 
       Response.End(); 
      } 
    } 

编辑: - 由于您正在使用更新面板,因此您在点击链接按钮时有回传功能。有很多方法可以做到这一点。我正在解释两种方式。 将这个代码在页面加载

ScriptManager.GetCurrent(this).RegisterPostBackControl(this.GridView1); 

或者,您在使用更新面板在aspx页面使用触发器,下面</ContentTemplate>

<Triggers> 
     <asp:PostBackTrigger ControlID="GridView1" /> 
</Triggers> 
+0

后检查答案我使用第一种方式,你给。你是一个传奇!谢谢!! @Litisqe库马尔 –