<span id="vmaw3"></span>
  • <mark id="vmaw3"></mark>

    <small id="vmaw3"><dfn id="vmaw3"></dfn></small>
      <meter id="vmaw3"></meter>
       
      設為首頁 加入收藏
      首 頁 企業簡介 項目案例 軟件定制 行業軟件 解決方案 企業資訊 服務專區 客服中心
      服務項目
      案例展示 更多 >>
      ·維修管理系統 2012/5/14
      ·園區游客服務管理系統 2012/5/10
      ·黨風廉政信息公開平臺 2012/5/10
      ·職工提案系統軟件 2012/1/11
      ·電信客戶資源管理系統軟… 2012/1/11
      ·洗衣收銀軟件 2012/1/11
      ·觸摸查詢系統軟件 2012/1/11
      ·西安來電彈屏軟件 2011/8/31
      ·西安軟件公司倉庫管理軟… 2011/6/9
      ·會員管理系統 2011/6/9
      聯系人:李先生
      電  話:029-87878512
      手  機:13468700578
      地  址:西安市歐亞大道絲路國際創意夢工廠4號樓
      在線咨詢:  762176615
      Email:junsoft@126.com
       
      當前的位置 >> 返回首頁 >> 解決方案
      C#從服務器下載文件代碼
      發布者:西安軟件公司   發布時間:2012/8/23   閱讀:16次

      一、//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.Rea}dAllBytes(FilePath));//---------
        WebForm.Response.End();

      一、
      //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.Rea}dAllBytes(FilePath));//---------
        WebForm.Response.End();


      網站首頁 | 關于我們 | 售后服務 | 網站地圖 | 查看留言 | 在線留言 | 客服中心
      © 版權所有:西安潤宇軟件科技有限公司 
      公司地址:西安市絲路國際創意夢工廠4號樓  聯系電話:029-87878512 手機:13468700578 聯系人:李先生
      Copyright ® 2011-2020 Xbwbw.com Inc. All Rights Reserved 
      技術支持:西安潤宇軟件科技有限公司  陜ICP備11000720號-2
      亚洲高清最新av网站