.net文件下载方法汇总

/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;               }

原文地址:https://www.cnblogs.com/fengyingwang/p/7591168.html