• Asp.net(c#)实现多线程断点续传


         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();
       }

  • 相关阅读:
    BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】
    SPOJ QTree【树链剖分】
    BZOJ_1503 [NOI2004]郁闷的出纳员 【Splay树】
    Hibernate学习实例
    Educational Codeforces Round 64 C. Match Points 【二分思想】
    ramn 备份操作
    表值函数--自定义工作日历
    删除win10开始菜单中程序的目录
    C#自定义注释自动生成模板注释
    oralce知识第三章
  • 原文地址:https://www.cnblogs.com/linzheng/p/1872230.html
Copyright © 2020-2023  润新知