2015-07-11 6 views
0

У меня этот код для моего 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> 

Это мой код для загрузки изображений в папке (это с клиентской стороны, другая веб-форма).

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

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

+0

вы используете обновления панели ?? –

+0

нет сэр. @Ganesh_Devlekar –

+0

Значит, код никогда не доходит до функции DownloadFile? –

ответ

1

Ваш код должен также работать, но по какой-либо причине это может быть не работает так попробовать, как таким образом:

страницы 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(); 
      } 
    } 

EDIT: - Поскольку вы используете панель обновления, тогда вы делаете обратную передачу при нажатии на ссылку. Есть много способов сделать это. Я объясняю два пути. Поместите этот код на странице загрузки

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

Или использовать триггер в ASPX странице ниже </ContentTemplate>

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

Я использовал первый способ, который вы дали. вы легенда! Спасибо!! @Litisqe Kumar –

Смежные вопросы