`
hsys
  • 浏览: 290464 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ASP.NET实现文件下载

阅读更多
   //TransmitFile实现下载 
    protected void Button1_Click(object sender, EventArgs e)
    {
        /* 
        微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 
        下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 
        代码如下: 
        */ 
        Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
        string filename = Server.MapPath("DownLoad/z.zip");
        Response.TransmitFile(filename);
    }

    //WriteFile实现下载 
    protected void Button2_Click(object sender, EventArgs e)
    {
        /* 
        using System.IO;

        */
        string fileName = "asd.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }

    //WriteFile分块下载 
    protected void Button3_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

        if (fileInfo.Exists == true)
        {
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
            byte[] buffer = new byte[ChunkSize];

            Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            Response.Close();
        }
    }

    //流方式下载 
    protected void Button4_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        //以字符流的形式下载文件 
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        Response.ContentType = "application/octet-stream";
        //通知浏览器下载文件而不是打开 
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }

 

//----------------------------------------------------------

 

 

public void DownloadFile( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FileBody )
{

  WebForm.Response.ClearHeaders();
  WebForm.Response.Clear();
  WebForm.Response.Expires = 0;
  WebForm.Response.Buffer = true;
  WebForm.Response.AddHeader("Accept-Language", "zh-tw");
  //'文件名称
  WebForm.Response.AddHeader("content-disposition", "attachment; filename='"+System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)+"'");
  WebForm.Response.ContentType = "Application/octet-stream";
  //'文件内容
  WebForm.Response.Write(FileBody);//-----------
    WebForm.Response.End();
}


//上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:

public void DownloadFileByFilePath( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FilePath )
{
  WebForm.Response.ClearHeaders();
  WebForm.Response.Clear();
  WebForm.Response.Expires = 0;
    WebForm.Response.Buffer = true;
  WebForm.Response.AddHeader("Accept-Language", "zh-tw");
  //文件名称
  WebForm.Response.AddHeader("content-disposition", "attachment; filename='" + System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8) +"'" );
  WebForm.Response.ContentType = "Application/octet-stream";
  //文件内容
  WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath));//---------
  WebForm.Response.End();
}

转自:http://www.diggcms.cn/html/2008-09/117_2012_00.html
分享到:
评论

相关推荐

    asp.net 实现图片下载功能

    在ASP.NET中实现图片下载功能是一项常见的需求,尤其是在构建网站时提供用户下载资源。与简单的文本或文件链接不同,图片通常会被浏览器解析并显示,而不是触发下载。本篇将详细介绍如何在ASP.NET环境下构建一个有效...

    ASP.NET 实现 上传下载案例

    总的来说,这个ASP.NET实现的上传下载案例展示了如何利用ASP.NET的核心组件来处理文件的上传和下载操作,同时也涵盖了用户界面设计和一些安全策略。通过深入学习和实践这个案例,你可以更好地理解ASP.NET在处理Web...

    基于ASP.NET文件上传、下载的网络硬盘系统 源码

    2. **文件上传组件**:在ASP.NET中,`HttpFileUpload`控件是实现文件上传的核心组件。通过在HTML表单中添加该控件,用户可以选择本地文件并提交到服务器。服务器端的代码则负责接收文件,通常使用`Request.Files`...

    asp.net批量打包下载文件

    这个场景可以通过ASP.NET MVC框架实现,利用HTTP协议的特性,将多个文件合并成一个压缩包供用户下载。以下是对这个主题的详细解释。 首先,我们需要理解ASP.NET MVC的基本概念。ASP.NET MVC是一种模型-视图-控制器...

    asp.net多文件下载 MVC多文件下载

    在ASP.NET MVC框架中,实现多文件下载是一个常见的需求,特别是在构建企业级应用或网站时。这个场景通常出现在用户需要一次性获取多个相关文件,如报告、文档或图片等。本篇将详细介绍如何在ASP.NET MVC中实现这一...

    【ASP.NET编程知识】asp.net单文件带进度条上传的解决方案.docx

    知识点2:使用ASP.NET缓存机制实现文件上传进度条显示 在本文中,我们使用ASP.NET缓存机制来实现文件上传进度条的显示。ASP.NET缓存机制能够帮助我们缓存文件上传的信息,从而实现进度条的显示。在本文中,我们使用...

    基于ASP.NET实现文件和数据的下载

    标题中的“基于ASP.NET实现文件和数据的下载”是指在ASP.NET框架下,通过编程方式提供文件和数据的下载服务。这一技术对于构建Web应用程序,尤其是那些需要向用户分发资源或提供数据导出功能的网站至关重要。ASP.NET...

    【ASP.NET编程知识】ASP.NET Core文件上传与下载实例(多种上传方式).docx

    文件下载的实现可以使用 FileResult 来返回文件流。同时,需要使用 ContentType 来指定文件的类型,以便客户端正确地处理文件。 知识点7: 文件上传和下载的安全性 在文件上传和下载中,需要注意安全性问题,例如,...

    asp.net 超大文件上传,带进度条源码,亲测能用

    综上所述,实现ASP.NET中的大文件上传并带有进度条功能,涉及到的技术点广泛,包括文件分块、合并、进度条UI、错误处理、安全控制等。理解这些知识点并能够灵活应用,对于开发高效且用户体验良好的文件上传系统至关...

    ASP.NET MVC 文件管理功能Demo

    ASP.NET MVC 文件管理功能Demo是基于ASP.NET MVC框架和Easy-UI前端库开发的一个实践项目,旨在实现对本地文件系统的全面操作。这个Demo涵盖了多种文件操作功能,包括上传、下载、复制、粘贴、压缩以及重命名等,使得...

    asp.net C# 利用FTP 远程下载文件

    总的来说,通过利用C#的`System.Net`命名空间,你可以方便地在ASP.NET环境中实现FTP远程文件下载功能,为用户提供高效、安全的文件获取服务。在实际开发中,还需要考虑错误处理、性能优化以及安全性等问题,确保应用...

    用ASP.NET实现对Image数据的存取

    《用ASP.NET实现对Image数据的存取》一文详细探讨了如何利用ASP.NET框架及ADO.NET技术对数据库中的图像数据进行高效管理和操作,这对于任何需要在网络应用中集成图像上传、下载或显示功能的开发者来说,都是极为宝贵...

    基于ASP.net的企业文件管理系统源码.zip

    对于学习者或开发者来说,这是一个极好的资源,可以深入理解ASP.NET如何应用于企业级文件管理系统的实现,以及如何利用C#(ASP.NET的主要编程语言)来设计和实现文件管理功能。 【标签】:“毕业设计 C# Java PHP”...

    asp.net实现文件上传下载小网站

    总结起来,通过ASP.NET实现文件上传下载小网站,需要掌握ASP.NET的基础知识,包括页面生命周期、HTTP请求响应、服务器控件、数据库操作等。同时,还需要关注用户体验、性能优化以及安全性问题。这个项目对于学习ASP...

    【ASP.NET编程知识】Asp.net实现MVC处理文件的上传下载功能实例教程.docx

    ASP.NET MVC 实现文件上传下载功能实例教程 一、概述 在 ASP.NET 程序开发中,文件上传和下载功能非常常见。 Asp.net.Mvc 框架提供了多种方式来实现文件上传和下载功能。本文将通过实例形式来实现文件上传和下载...

    asp.net 批量上传文件

    在ASP.NET中实现批量文件上传是一项常见的需求,尤其在处理大量用户数据时。在这个场景下,我们可以使用jQuery库中的`jquery.form`插件来增强页面的交互性,并结合ASP.NET后端技术,实现异步、无刷新的批量文件上传...

    Asp.Net实现下载功能

    这可能是详细步骤或者示例代码,你可以参考其中的内容进一步了解和实践Asp.Net实现下载功能的具体细节。 总的来说,Asp.Net结合C#可以方便地实现在网页上的文件下载功能,通过合理的编程和配置,可以为用户提供安全...

    asp.net 播放mp4视频文件代码

    在这个场景中,我们关注的是如何在ASP.NET中实现MP4视频文件的播放。MP4是一种常用的视频格式,支持高质量的视频流,适用于网页播放。 首先,要在ASP.NET网页上播放MP4视频,我们需要在HTML中使用`<video>`标签。这...

    asp.net文件上传下载程序 有数据库 下载可用

    文件下载则可以通过HttpResponse对象来实现,设置合适的Content-Disposition和Content-Type头,然后将文件内容写入响应流。这样,浏览器就能正确处理这个响应,提供一个下载对话框或者直接打开文件。 在数据库方面...

Global site tag (gtag.js) - Google Analytics