• .net文件下载方法汇总


    转载自: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;      
            }

  • 相关阅读:
    let和const====均参考阮大神的es6入门
    面向对象封装
    记忆函数
    PHP面试题一[转]
    TDSSNIClient 初始化失败,出现错误 0x7e,状态代码 0x60。
    针对hasp加密狗服务器客户机ip不在同一个网段的解决方案
    sql 语句用isnull函数的用法
    如何用JS获取键盘上任意按键的值?兼容FireFox和IE js获取键盘ASCII码?js键盘事件全面控制
    adobe captivate 5.5 中文教程
    档案软件演示版下载安装说明书
  • 原文地址:https://www.cnblogs.com/xuxin-1989/p/3896585.html
Copyright © 2020-2023  润新知