2017-04-26 103 views
0

我做了代码,当我上传文件时,它将被保存到文件夹调用数据并可以下载(我根本没有使用数据库)。当文件可以上传和下载时,我无法使删除按钮起作用。有什么办法可以做到这一点吗?谢谢。如何删除数据文件夹内的文件?

这里是我的设计代码:

 <asp:FileUpload ID="FileUpload1" runat="server" /> 
    <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" /> 
    <br /> 
    <br /> 
    <br /> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" OnRowCommand="GridView1_RowCommand" OnRowDeleting="GridView1_RowDeleting"> 
     <Columns> 
      <asp:TemplateField HeaderText="File"> 
       <ItemTemplate> 
        <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("File") %>' CommandName="Download" Text='<%# Eval("File") %>'></asp:LinkButton> 
        <br /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="Size" HeaderText="Size In Bytes" /> 
      <asp:BoundField DataField="Type" HeaderText="File Type" /> 
      <asp:TemplateField HeaderText="Delete"> 
      <ItemTemplate> 
      <span onclick="return confirm('Are you sure to Delete the record?')"> 
      <asp:LinkButton ID="lnkB" runat="Server" Text="Delete" CommandName="Delete"></asp:LinkButton> 
      </span> 
      </ItemTemplate> 
      </asp:TemplateField> 

     </Columns> 
     <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> 
     <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" /> 
     <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" /> 
     <RowStyle BackColor="White" ForeColor="#330099" /> 
     <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" /> 
     <SortedAscendingCellStyle BackColor="#FEFCEB" /> 
     <SortedAscendingHeaderStyle BackColor="#AF0101" /> 
     <SortedDescendingCellStyle BackColor="#F6F0C0" /> 
     <SortedDescendingHeaderStyle BackColor="#7E0000" /> 
    </asp:GridView> 
    <br /> 

这里是我的代码背后:

public partial class ScheduleUpload : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     if(FileUpload1.HasFile) 
     { 
      FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/") + FileUpload1.FileName); 
     }//end if FileUpload1 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("File", typeof(string)); 
     dt.Columns.Add("Size", typeof(string)); 
     dt.Columns.Add("Type", typeof(string)); 


     foreach (string strFile in Directory.GetFiles(Server.MapPath("~/Data/"))) 
     { 
      FileInfo fi = new FileInfo(strFile); 

      dt.Rows.Add(fi.Name, fi.Length, GetFileTypeByExtension(fi.Extension)); 

     }//end foreach 

     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    }///end btn1_Click 

    private string GetFileTypeByExtension(string extension) 
    { 
     switch(extension.ToLower()) 
     { 
      case ".doc": 
      case ".docx": 
       return "Microsoft Word Document"; 

      case ".xlsx": 
      case ".xls": 
       return "Microsoft Excel Document"; 

      case ".txt": 
       return "Text Document"; 

      case ".jpg": 
      case ".png": 
       return "Image"; 

      default: 
       return "Unknown"; 

     }//end switch 
    }//end GetFileTypeByExtension 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if(e.CommandName == "Download") 
     { 
      Response.Clear(); 
      Response.ContentType = "application/octect-stream"; 
      Response.AppendHeader("content-disposition", "filename=" + e.CommandArgument); 
      Response.TransmitFile(Server.MapPath("~/Data/") + e.CommandArgument); 
      Response.End(); 
     }//end if 
    }//end GridView_RowCommand 

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 
     File.Delete(MapPath(("~/File/"))); 

    } 
} 
+0

此代码是不完整的:File.Delete(的MapPath (( “〜/文件/”)));您应该将文件的确切路径提供给File.Delete方法。 –

回答

0

尝试以下:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 

    foreach (GridViewRow row in GridView1.Rows) 
    { 
     if (row.RowIndex == e.RowIndex) 
     { 
      LinkButton lnkFile= (LinkButton)row.FindControl("LinkButton1"); 
      File.Delete(MapPath(("~/Data/") + lnkFile.Text)); //Assuming Data exist in your solution 
     } 
    } 
} 
+0

谢谢sooooo多!它工作正常。 xD – noobie27

+0

很高兴帮助:-) –

相关问题