• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET 文件断点续传实现代码
    这里我通过Response类中的AddHeader方法将一个HTTP头添加到输出流中。在HTTP头中,是由头信息和体信息组成。两者之间用一行空行分开。这里利用在头中加入Range段,来表示客户端希望从何处继续下载,来实现续传功能。
    好了废话不多说,让我们开始吧。
    1.新建1个主页,名字随便起哈。
    2.在该页中添加1个LinkButton按钮,该按钮用来执行实现的过程。
    3.在LinkButton的Click事件中,实现断点续传功能。
    代码如下:
    另外不要忘记引用System.IO命名空间,这里只贴出后台实现代码了(前台不会可以回去从学了。。。)
    复制代码 代码如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    public partial class DFile : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void LinBtnDFile_Click(object sender, EventArgs e)
    {
    // 创建一比特数组
    byte[] buffer = new Byte[10240];
    // 指定要下载文件的路径.
    string filePath = @"D:\爱智旮旯.rar";
    // 或取文件名包括扩展名
    string fileName = Path.GetFileName(filePath);
    Stream fileStream = null;
    try
    {
    // 打开文件
    fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
    Response.Clear();
    // 获取文件的大小
    long fileSize = fileStream.Length;
    long sum = 0;
    if (Request.Headers["Range"] != null)
    {
    Response.StatusCode = 206; // 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200。
    sum = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));
    }
    if (sum != 0)
    {
    Response.AddHeader("Content-Range", "bytes " + sum.ToString() + "-" + ((long)(fileSize)).ToString() + "/" + fileSize.ToString());
    }
    // 获取部分http头信息
    Response.AddHeader("Content-Length", ((long)(fileSize - sum)).ToString());
    Response.ContentType = "application/octet-stream";
    //获取文件来源
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(fileName)));
    // Response.Flush();
    fileStream.Position = sum; //设置当前流位置
    fileSize = fileSize - sum;
    // 当文件大小大于0是进入循环
    while (fileSize > 0)
    {
    // 判断客户端是否仍连接在服务器
    if (Response.IsClientConnected)
    {
    // 获取缓冲区中的总字节数.
    int length = fileStream.Read(buffer, 0, 10240);
    // 写入数据
    Response.OutputStream.Write(buffer, 0, length);
    // 将缓冲区的输出发送到客户端
    Response.Flush();
    buffer = new Byte[10240];
    fileSize = fileSize - length;
    }
    else
    {
    //当用户断开后退出循环
    fileSize = -1;
    }
    }
    }
    catch (Exception ex)
    {
    Response.Write("Error : " + ex.Message);
    }
    finally
    {
    if (fileStream != null)
    {
    //关闭文件
    fileStream.Close();
    }
    Response.End();
    }
    }
    }

    这里比较简单,请根据实际情况作适当修改。
    您可能感兴趣的文章:
    • 在ASP.NET中支持断点续传下载大文件(ZT)源码
    • Asp.net中断点续传的原理与实现方法分享
    • .NET或.NET Core Web APi基于tus协议实现断点续传的示例
    上一篇:asp.net生成验证码(纯数字)
    下一篇:asp.net 文章分页显示实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET 文件断点续传实现代码 ASP.NET,文件,断点,续传,实现,