2017-04-26 21 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

很高興幫助:-) –