c# - 如何使用保存对话框下载文件

标签 c# asp.net

在我的项目中,我有一个包含 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 代码

任何人都可以帮我解决这个问题。

最佳答案

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

那是你的问题

查找允许下载的文件类型 here , 并适当修改。

关于c# - 如何使用保存对话框下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275672/

相关文章:

asp.net - VS2010 中 ReportViewer 程序集的问题

c# - "async await "怎么理解

c# - 如何在 VS2019 中启用“编辑并继续”?

ASP.NET MVC 什么线程池用于自定义任务?

c# - 在 Windows 应用商店应用程序中使用自定义流

c# - 如何在具有不同where子句的Linq lambda中使用两个条件

asp.net - 具有用户定义(数据驱动)表单定义的 MVC

c# - 使用组合器 lamba 合并 C# 中的 2 个列表

c# - 如何在表格中插入图像路径

c# - SSIS脚本任务检查文件是否存在于文件夹中