jianglanshui

           

          Asp.net(c#)實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳


          http://blog.csdn.net/laolaowhn/article/details/1821886

          Asp.net(c#)實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳       

                  分類:            0.asp.net文件上傳下載540人閱讀評(píng)論(0)收藏舉報(bào)
          Asp.net(c#)實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳 

            CSDN Blog推出文章指數(shù)概念,文章指數(shù)是對(duì)Blog文章綜合評(píng)分后推算出的,綜合評(píng)分項(xiàng)分別是該文章的點(diǎn)擊量,回復(fù)次數(shù),被網(wǎng)摘收錄數(shù)量,文章長(zhǎng)度和文章類型;滿分100,每月更新一次。

          http://www.cnblogs.com/bestcomy/archive/2004/08/10/31950.html

          以前一直錯(cuò)誤的認(rèn)為在ASP.NET中無(wú)法通過(guò)編程方式實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳,今天終于獲得了這樣一個(gè)解決方案,讓我明白要學(xué)習(xí)的東西還很多
          此解決方案基于其它解決方案及相關(guān)資料,根據(jù)我自己的理解改進(jìn).如有錯(cuò)漏,請(qǐng)盡管指出;如有其它更好的解決方案,請(qǐng)推薦一下,感謝先。

          System.IO.Stream iStream = null;

                     
          // Buffer to read 10K bytes in chunk:
                      byte[] buffer = new Byte[10240];

                     
          // Length of the file:
                      int length;

                     
          // Total bytes to read:
                      long dataToRead;

                     
          // Identify the file to download including its path.
                      string filepath  = @"E:/software/SQL Server 2000 Personal Edition.ISO";

                     
          // Identify the file name.
                      string  filename  = System.IO.Path.GetFileName(filepath);

                     
          try
                     
          {
                         
          // Open the file.
                          iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
                              System.IO.FileAccess.Read,System.IO.FileShare.Read);
                          Response.Clear();

                         
          // Total bytes to read:
                          dataToRead = iStream.Length;

                         
          long p = 0;
                         
          if(Request.Headers["Range"]!=null)
                         
          {
                              Response.StatusCode
          = 206;
                              p
          = long.Parse( Request.Headers["Range"].Replace("bytes=","").Replace("-",""));
                          }

                         
          if(p != 0)
                         
          {
                              Response.AddHeader(
          "Content-Range","bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());                   
                          }

                          Response.AddHeader(
          "Content-Length",((long)(dataToRead-p)).ToString());
                          Response.ContentType
          = "application/octet-stream";
                          Response.AddHeader(
          "Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));

                          iStream.Position
          = p;
                          dataToRead
          = dataToRead - p;
                         
          // Read the bytes.
                          while (dataToRead > 0)
                         
          {
                             
          // Verify that the client is connected.
                              if (Response.IsClientConnected)
                             
          {
                                 
          // Read the data in buffer.
                                  length = iStream.Read(buffer, 0, 10240);

                                 
          // Write the data to the current output stream.
                                  Response.OutputStream.Write(buffer, 0, length);

                                 
          // Flush the data to the HTML output.
                                  Response.Flush();

                                  buffer
          = new Byte[10240];
                                  dataToRead
          = dataToRead - length;
                              }

                             
          else
                             
          {
                                 
          //prevent infinite loop if user disconnects
                                  dataToRead = -1;
                              }

                          }

                      }

                     
          catch (Exception ex)
                     
          {
                         
          // Trap the error, if any.
                          Response.Write("Error : " + ex.Message);
                      }

                     
          finally
                     
          {
                         
          if (iStream != null)
                         
          {
                             
          //Close the file.
                              iStream.Close();
                          }
                             Response.End();
                      }

          posted on 2013-01-25 14:19 老蔣 閱讀(211) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 乌兰察布市| 巴塘县| 平南县| 永新县| 梅州市| 万山特区| 耒阳市| 富平县| 通化市| 泉州市| 冷水江市| 南投县| 修武县| 新丰县| 台南县| 基隆市| 榆社县| 隆化县| 威宁| 甘德县| 璧山县| 涪陵区| 龙海市| 正定县| 曲靖市| 玉林市| 二连浩特市| 策勒县| 晴隆县| 南开区| 绥宁县| 丰原市| 泰和县| 大埔县| 屯门区| 天祝| 阿坝| 永吉县| 土默特右旗| 淮北市| 凤台县|