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人閱讀評論(0)收藏舉報(bào)
          Asp.net(c#)實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳 

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

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

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

          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) 評論(0)  編輯  收藏


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


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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 卓资县| 通州区| 中山市| 安新县| 合肥市| 额敏县| 南康市| 阜康市| 苗栗市| 凤阳县| 广汉市| 普安县| 凉山| 苏尼特左旗| 东莞市| 筠连县| 广元市| 古蔺县| 全州县| 铜陵市| 循化| 佛坪县| 昭平县| 兴文县| 青州市| 平山县| 碌曲县| 保康县| 翁牛特旗| 江川县| 武义县| 宜良县| 陈巴尔虎旗| 科技| 永丰县| 买车| 通榆县| 通城县| 乐至县| 扎鲁特旗| 灵宝市|