2010-11-25 159 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,它看起来相当广阔的,所以我就不再重复了所描述的内容处置头...