转载自:http://blog.sina.com.cn/s/blog_680942070101ahsq.html

//TransmitFile实现下载

protected void Button1_Click1(object sender, EventArgs e)

{

string strFileName = "三部闲置设备管理系统操作手册IEMS.ppt";

Response.ContentType = "application/x-zip-compressed";

//Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

string filename = BLL.Config.PART_EM_UPLOAD_DOC + strFileName;

//BLL.Config.PART_EM_UPLOAD_DOC 为路径   ("D:/EMUploadDoc/")

Response.AddHeader("Content-Disposition", "attachment;filename=" +Server.UrlPathEncode(strFileName));

//Server.UrlPathEncode()解决文件名的乱码问题.

Response.TransmitFile(filename);

}    //WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)

{

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();

}

C#:  
///  
///   文件下载
///  
///  
private   void   FileDownload(string   FullFileName)
{
FileInfo   DownloadFile   =   new   FileInfo(FullFileName);  
Response.Clear();
Response.ClearHeaders();
Response.Buffer=false;
Response.ContentType= "application/octet-stream ";
Response.AppendHeader( "Content-Disposition ", "attachment;filename= "  +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8));
Response.AppendHeader( "Content-Length ",DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}

文件读写
public Stream GetFileStream(string filename)     
        {   //文件地址         
            Uri fileUri = new Uri(filename, UriKind.Relative);    
            //保存          
            StreamResourceInfo info = new StreamResourceInfo(this.stream, null); 
            if (this.stream is System.IO.FileStream)          
            {           
                this.stream.Seek(0, SeekOrigin.Begin);         
            }          
            StreamResourceInfo stream = System.Windows.Application.GetResourceStream(info, fileUri);         
            if (stream != null)
            {             
                return stream.Stream;   
            }          
            return null;     
        }
        public IEnumerable GetFileNamesInZip()
        {
            BinaryReader reader = new BinaryReader(stream);
            stream.Seek(0, SeekOrigin.Begin);
            string name = null;
            List names = new List();
            while (ParseFileHeader(reader, out name))       
            {
                names.Add(name);
            }
            return names;
        }
        private static bool ParseFileHeader(BinaryReader reader, out string filename)
        {
             filename = null;   
            if (reader.BaseStream.Position < reader.BaseStream.Length)  
            {
                 filename = null;         
                if (reader.BaseStream.Position < reader.BaseStream.Length)  
                 {
                    reader.BaseStream.Seek(2, SeekOrigin.Current);                
                    short genPurposeFlag = reader.ReadInt16();               
                    if (((((int)genPurposeFlag) & 0x08) != 0))   
                        return false;
                    reader.BaseStream.Seek(10, SeekOrigin.Current);    
                    int compressedSize = reader.ReadInt32();
                    int unCompressedSize = reader.ReadInt32(); 
                    short fileNameLenght = reader.ReadInt16();
                    short extraFieldLenght = reader.ReadInt16();
                    filename = new string(reader.ReadChars(fileNameLenght));                
                    if (string.IsNullOrEmpty(filename))
                         return false;             
                    reader.BaseStream.Seek(extraFieldLenght + compressedSize, SeekOrigin.Current);                    if (unCompressedSize == 0)                        return ParseFileHeader(reader, out filename);                 
                         else            
                             return true;
                     }          
            }          
            return false;      
        }

.net文件下载方法汇总的更多相关文章

  1. struts2 实现文件下载方法汇总

    http://pengranxiang.iteye.com/blog/259401 一.通过struts2提供的下载机制下载文件: 项目名为 struts2hello ,所使用的开发环境是MyEcli ...

  2. ASP.NET导出excel表方法汇总

    asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...

  3. 微擎系统BUG漏洞解决方法汇总(原创)

    微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...

  4. 微擎系统BUG漏洞解决方法汇总

    微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...

  5. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...

  7. C#读写文件的方法汇总_C#教程_脚本之家

    C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm

  8. UITextView实现placeHolder方法汇总

    UITextField中有一个placeholder属性,可以设置UITextField的占位文字,起到提示用户的作用.可是UITextView就没那么幸运了,apple没有给UITextView提供 ...

  9. 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

    这篇文章主要介绍了将编码从GB2312转成UTF-8的方法汇总(从前台.程序.数据库),需要的朋友可以参考下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意 ...

随机推荐

  1. Xcode7国际化(根据系统语言切换App显示的语言) - 元宵节快乐!

    老规矩, 上gif 下面是配置的大概流程: 这个是要显示中文的.strings文件的内容和格式 这个是要显示英文的.strings文件的内容和格式 下面是应用名部分: 然后下面是代码部分: impor ...

  2. C#析构函数,类运行结束后运行

    public class Students { //创建对像时使用 public Students(string name, int age, char gender, int englist, in ...

  3. 剖析c++(二) 内置类型的内存形式

    分布形式以及转换时候的截断(待编辑)

  4. [GIT] warning: LF will be replaced by CRLF问题解决方法

    原文链接[http://michael-roshen.iteye.com/blog/1328142] 开发环境: 操作系统: windows xp ruby 1.9.2 rails 3.1.3 git ...

  5. mongodb spring

    可参考 http://blog.csdn.net/cuiran/article/details/8287204 我修改后的代码 http://pan.baidu.com/s/1mgJYbaC

  6. php 中PHP_EOL使用

    一个小小的换行,其实在不同的平台有着不同的实现,为什么要这样,可以是世界是多样的.本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r. ...

  7. mysql 查询表

    判断表是否存在 SELECT table_name FROM information_schema.TABLES WHERE table_name ='yourname'; 判断存储过程是否存在 se ...

  8. scala 入门(1)

    大数据“火”的有段日子了,原来打算学习hadoop…… 后知道spark要比hadoop更牛, 故而转学spark.其原码为scala所写,为了更好的研究spark,故又开始学习scala. 将自己所 ...

  9. LeetCode_Generate Parentheses

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...

  10. qt http 下载文件

    本文章介绍如何利用HTTP从网站上下载文件.在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议.对于HTTP就不多解释了. 在Qt网络编程中,需要用到协议,即HTTP ...