`
shirlly
  • 浏览: 1652587 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

c# 实现下载文件

    博客分类:
  • .NET
阅读更多
一般做下载文件的时候,直接用文件的路径作为文件名连接的url,点击该文件名的时候,就可以下载文件,这个是最简单的实现的文件下载的方法
<a href="relatefilePath">fileName</a>

这样实现文件的下载存在的问题
1、如果是图片,点击文件名的时候,会直接打开图片
2、不能灵活修改下载弹出框中显示的文件名
所以为了解决上述的问题,需要自己下个下载文件的函数,示例代码如下
前台代码
<asp:LinkButton ID="lbtnDownload" runat="server" CommandArgument='<%#Eval("ID") %>' OnCommand="downloadAttachment">下载附件</asp:LinkButton> 

后台的代码
#region 下载附件

    protected void downloadAttachment(object sender, CommandEventArgs e)
    {
        int attaID = DataTypeConvert.ConvertToInt(e.CommandArgument.ToString());

        Mail mail = new Mail();

        DataSet attaDS = mail.GetAttachmentsByID(attaID);
        if (attaDS.Tables[0].Rows.Count > 0)
        {
            string fileName = attaDS.Tables[0].Rows[0]["Name"].ToString();

            WebClient webClient = new WebClient();
            byte[] responseData;

            //提交请求并取得结果
            try
            {
                string filePath = attaDS.Tables[0].Rows[0]["Url"].ToString();
                filePath = Server.MapPath(filePath);
                responseData = webClient.DownloadData(filePath);//注意这里的参数用的是绝对的路径,而不是相对的路径
            }
            catch
            {
                this.lblError.Text = "<br /><font color='red'>下载的附件不存在,可能被删除了!</font>";
                return;
            }

            //输出二进制流
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            Response.ContentType = attaDS.Tables[0].Rows[0]["Type"].ToString();
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            Response.AppendHeader("Content-Length", responseData.Length.ToString());
            Response.BinaryWrite(responseData);
            Response.Flush();
            Response.End();
        }
    }

    #endregion
分享到:
评论

相关推荐

    c# 实现大文件下载

    在C#编程环境中,开发一个能够处理大文件下载的功能是一项重要的任务。这通常涉及到ASP.NET框架...提供的文档"C#实现下载大文件.doc"可能包含了具体的代码示例和更详细的步骤,建议查阅该文档以获取更全面的实现指导。

    C#实现HTTP下载文件的方法

    以下将详细解释如何使用C#实现HTTP下载文件的方法,包括HTTP通信的创建、本地文件的写入以及相关的注意事项。 首先,我们需要创建一个`HttpWebRequest`对象来初始化HTTP请求。通过`WebRequest.Create(url)`方法,...

    C#实现IIS服务器下载文件

    C#实现IIS服务器下载文件 本文将详细介绍如何使用C#语言实现IIS服务器下载文件的功能。通过使用WebClient类和FileStream类,可以实现高抽象程度的Internet通讯服务,并将网络文件下载到本地。 一、概述 本文通过...

    C#实现多线程下载文件

    本文将深入探讨如何在C#中实现多线程下载文件,涉及的知识点包括线程池、异步编程、进度更新以及错误处理。 首先,我们需要了解线程的基本概念。在C#中,线程是程序执行的独立路径,每个线程都有自己的调用堆栈,...

    使用C#.NET实现FTP文件下载

    使用BackgroundWorker 实现文件下载、异步提示 准备做一个可视化的WinForm界面,这就需要反映文件下载进度,要达到这个实时报告进度的功能,就需要进行异步操作,可以通过线程或BackgroundWorker 类去实现, 由于...

    C# Winform 下载文件

    本篇将深入探讨如何使用WebClient的DownloadFile方法来实现文件下载功能。 首先,你需要在Winform应用中创建一个用户界面,可以包含一个按钮,用于触发文件下载,以及可能的进度条或状态指示器来显示下载进度。以下...

    C#实现文件上传下载源代码

    "C#实现文件上传下载源代码" 本文将详细介绍使用C#实现文件上传和下载功能的源代码。该源代码使用ASP.NET框架,实现了文件上传、下载和文件夹管理功能。 C#文件上传下载源代码解析 1. 文件上传功能实现 在源代码...

    C#实现的简单下载器

    【C#实现的简单下载器】是一个开源项目,旨在帮助开发者理解如何在.NET环境中构建一个基本的文件下载工具。这个下载器可能包含了处理URL请求、数据流读取、文件保存等核心功能,使得用户能够方便地从互联网上获取并...

    C#多线程文件下载工具(访问restful形式接口)

    在本项目中,我们关注的是一个利用C#实现的多线程文件下载工具,该工具能够访问RESTful形式的接口进行文件下载。在深入探讨这个工具之前,我们需要了解几个关键概念。 首先,让我们谈谈“多线程”。多线程是指在...

    C#实现Ymodem协议IAP下载升级

    "C#实现Ymodem协议IAP下载升级"是一个针对这一需求的解决方案,主要涉及到两个关键概念:Ymodem协议和In-Application Programming(IAP)。 Ymodem协议是一种广泛使用的串行通信协议,主要用于文件传输,特别是在低...

    C# Winform 简单实现Http下载

    在本文中,我们将深入探讨如何使用C# Winform来实现一个简单的HTTP文件下载功能,并且在下载过程中显示进度条。由于我们暂时不考虑断点续传功能,因此这个下载器将从头开始完整地下载文件。 首先,让我们了解C# ...

    C#实现远程文件传送

    本主题将深入探讨如何利用C#实现远程文件传送,这是一个实用的技术,可以帮助开发者实现数据同步、备份或共享等功能。 首先,理解远程文件传送的基本概念。远程文件传送指的是将本地计算机上的文件传输到另一台远程...

    C# FTP C#实现ftp文件上传下载

    C# FTPC#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载

    C#实现文件比较的功能,比较两个文件内容是否相同

    总的来说,C#提供了多种方式来实现文件内容的比较,可以根据实际情况选择合适的方法。在处理大量数据或大文件时,优化读取和比较策略是非常重要的,以确保程序的效率和稳定性。通过理解和熟练运用这些技术,你可以...

    C#实现SFTP文件上传和下载,有进度条

    在本文中,我们将深入探讨如何使用C#编程语言和Renci.SshNet库来实现SFTP(Secure File Transfer Protocol)文件的上传与下载,并且在操作过程中添加进度条功能。SFTP是一种安全的网络协议,用于在客户端和服务器...

    C#实现局域网文件传送

    本主题关注的是如何使用C#来实现局域网(LAN)中的文件传输功能。局域网文件传送允许在同一网络内的计算机之间高效地共享数据,这对于团队协作、数据备份和系统部署等场景非常有用。 首先,我们需要理解局域网文件...

    c#实现pcap格式解包

    标题 "c#实现pcap格式解包" 涉及到的是使用C#编程语言对PCAP(Packet Capture)文件格式进行解析的过程。PCAP是一种广泛用于网络数据包捕获和分析的文件格式,通常与Wireshark这样的网络分析工具一起使用。下面将...

    C#listView选择项右键菜单下载功能

    本示例项目“C# listView选择项右键菜单下载功能”提供了几个关键功能的实现,包括ListView控件的右键菜单、文件下载进度条以及C#操作Word文件。下面将分别对这些知识点进行详细介绍。 首先,`ListView`是Windows ...

    C# 大文件下载 断点续传

    本文将深入探讨使用C#语言实现大文件下载的断点续传技术,以及如何扩展功能,如多线程下载和任务导入导出。 首先,理解“断点续传”这一概念。它允许用户在中断下载后,从上次停止的地方继续,而不是从头开始。这...

    C# 实现生成cad文件

    1.C#实现生成CAD 文件(dwg)2.案例中包含画圆形,画线,生成CAD文件. dwg文件3.需要安装autocad2007

Global site tag (gtag.js) - Google Analytics