2010-11-25 68 views
2

在我的項目中我有一個文件夾包含N個文件。我需要一個功能,該頁面應該有所有這些文件的鏈接,以便客戶端可以下載這些文件。如何使用保存對話框下載文件

爲此,我已動態創建鏈接按鈕並鏈接每個鏈接的每個文件按鈕。

其代碼

string filePath = Request.PhysicalPath.Substring(0, Request.PhysicalPath.LastIndexOf("\\")); 
     filePath = filePath.Substring(0, filePath.LastIndexOf("\\")); 
     filePath = filePath.Substring(0, filePath.LastIndexOf("\\")) + "\\Export"; 

     string[] files = System.IO.Directory.GetFiles(filePath); 
     Array.Sort(files); 
     Array.Reverse(files); 
     int counter = 0; 
     foreach (string file in files) 
     { 
      if (counter >= 10) 
       break; 
      LinkButton linkButton = new LinkButton(); 
      int startIndex = Convert.ToInt32(file.LastIndexOf("\\")); 
      int length = Convert.ToInt32(file.Length); 
      string fileName = file.Substring(startIndex + 1, length - startIndex - 1).ToString(); 
      fileName = fileName.Substring(0, fileName.LastIndexOf(".")); 
      string[] a = fileName.Split('_'); 
      string year = a[1].Substring(0, 4); 
      string month = a[1].Substring(4, 2); 
      switch (month) 
      { 
       case "01": 
        month = "January"; 
        break; 
       case "02": 
        month = "February"; 
        break; 

       case "03": 
        month = "March"; 
        break; 
       case "04": 
        month = "April"; 
        break; 
       case "05": 
        month = "May"; 
        break; 
       case "06": 
        month = "June"; 
        break; 
       case "07": 
        month = "July"; 
        break; 
       case "08": 
        month = "August"; 
        break; 
       case "09": 
        month = "September"; 
        break; 
       case "10": 
        month = "October"; 
        break; 
       case "11": 
        month = "November"; 
        break; 
       case "12": 
        month = "December"; 
        break; 

      } 
      counter++; 
      linkButton.ForeColor = System.Drawing.ColorTranslator.FromHtml("#b32317"); 
      linkButton.Text = month + " " + year + " Car Hire Details"; 
      //hyperlink.NavigateUrl = file.ToString(); 
      linkButton.Font.Bold = true; 
      //hyperlink.ID = "TestLB"; 
      linkButton.Command += new CommandEventHandler(this.lb_Command); 
      linkButton.CommandArgument = file.ToString(); 
      Panel1.Controls.Add(linkButton); 
      Label lbl1 = new Label(); 
      lbl1.Text = "<br /> <br />"; 
      Panel1.Controls.Add(lbl1); 

     } 


    } 


    protected void lb_Command(object sender, CommandEventArgs e) 
    { 

     System.String filename = e.CommandArgument.ToString();// this is your file name 
     Response.ContentType = "Plain/Text"; 
     System.String disHeader = "Attachment; Filename=\"" + filename + "\""; 
     Response.AppendHeader("Content-Disposition", disHeader); 
     System.IO.FileInfo fileToDownload = new System.IO.FileInfo(e.CommandArgument.ToString()); 
     //filepath to download 
     Response.Flush(); 
     Response.WriteFile(fileToDownload.FullName); 


    } 

但問題是,當我試圖下載此:

  1. 文件被下載HTML格式,而且下載的文件名文件變得相同,我的代碼文件名稱,因爲我想要的實際名稱。

  2. 下載的文件有實際的數據,但它也包含了HTML代碼的網頁上這個鏈接來

任何機構可以幫我出這一點。

回答

2

Response.ContentType = "APPLICATION/OCTET-STREAM";

那是你的問題

查一查您允許下載here的文件類型,並適當地修改它。

+0

我有txt文件和我試圖使用「純文本」。但同樣的問題仍然存在 – 2010-11-25 10:04:43

0

簡單的使用在RFC 2183中關於這個問題的快速谷歌帶來了this page,它看起來相當廣闊的,所以我就不再重複了所描述的內容處置頭...

相關問題