zoukankan      html  css  js  c++  java
  • HTTP协议断点续传

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;

    namespace HttpDemo
    {
    class Program
    {
    //需要下载的路径
    static string url = "http://www.aseoe.com/demo/api/jquery_aseoe_001.zip";
    //获取文件全称
    static string fileName = Path.GetFileName(url);
    //保存路径
    static string localPath = "D:\HttpCeShi\" + fileName;
    //未下载完后面加.temp后缀名
    static string tempPath = localPath + ".temp";
    //偏移量(断点)
    static int pos;

    static void Main(string[] args)
    {
    DownLoad();
    Console.ReadLine();
    }
    public static void DownLoad()
    {
    //如果存在要更新的文件就结束
    if (File.Exists(localPath))
    return;

    Stream localfs = null;
    //如果不存在未上传完文件(需断点续传文件)
    if (File.Exists(tempPath))
    {
    localfs = new FileStream(tempPath, FileMode.Open);
    }

    else
    {
    localfs = new FileStream(tempPath, FileMode.Create);
    }
    //获取断点
    pos = (int)localfs.Length;

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Headers.Add("Accept-Charset", "GBK,utf-8");
    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
    request.Method = "GET";
    request.Timeout = 30000;
    //文件总长度单位(B)
    long total = request.GetResponse().ContentLength;
    Console.WriteLine("总长度为:" + total);
    if (pos > 0)
    request.AddRange(pos);//偏移到断点

    HttpWebResponse responseResult = (HttpWebResponse)request.GetResponse();
    using (Stream stream = responseResult.GetResponseStream())
    {
    byte[] buffer = new byte[total - pos];

    int readSize = stream.Read(buffer, 0, buffer.Length);
    while (readSize > 0)
    {
    localfs.Write(buffer, 0, readSize);
    readSize = stream.Read(buffer, 0, buffer.Length);
    Console.WriteLine("已下载:" + localfs.Length);
    }
    localfs.Close();
    File.Move(tempPath, localPath);//将临时文件改为正常文件后缀
    Console.WriteLine("下载完成!!!");
    }

    }


    }
    }

  • 相关阅读:
    647. 回文子串
    109. 有序链表转换二叉搜索树
    第1篇 第1章 走进推荐系统
    推荐系统为什么要分测试集与训练集
    面向对象案例 烤地瓜 搬家具python实现
    python面向对象方法
    python实现学生信息系统
    随机数据的生成
    Python中numpy的应用
    pandas 的index用途
  • 原文地址:https://www.cnblogs.com/zzp0320/p/7910644.html
Copyright © 2011-2022 走看看