C# Http文件下载公共类(支持断点续传)

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 using System.Net;
 7
 8 namespace XcDownLoadFile
 9 {
10     public class DownLoadFile
11     {
12         ///
13         /// 下载文件方法
14         ///
15         /// 文件保存路径和文件名
16         /// 返回服务器文件名
17         ///
18         public bool DeownloadFile(string strFileName, string file)
19         {
20             bool flag = false;
21             //打开上次下载的文件
22             long SPosition = 0;
23             //实例化流对象
24             FileStream FStream;
25             //判断要下载的文件夹是否存在
26             if (File.Exists(strFileName))
27             {
28                 //打开要下载的文件
29                 FStream = File.OpenWrite(strFileName);
30                 //获取已经下载的长度
31                 SPosition = FStream.Length;
32                 FStream.Seek(SPosition, SeekOrigin.Current);
33             }
34             else
35             {
36                 //文件不保存创建一个文件
37                 FStream = new FileStream(strFileName, FileMode.Create);
38                 SPosition = 0;
39             }
40             try
41             {
42                 //打开网络连接
43                 HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.newxing.com/download/" + file);
44                 if (SPosition > 0)
45                     myRequest.AddRange((int)SPosition);             //设置Range值
46                 //向服务器请求,获得服务器的回应数据流
47                 Stream myStream = myRequest.GetResponse().GetResponseStream();
48                 //定义一个字节数据
49                 byte[] btContent = new byte[512];
50                 int intSize = 0;
51                 intSize = myStream.Read(btContent, 0, 512);
52                 while (intSize > 0)
53                 {
54                     FStream.Write(btContent, 0, intSize);
55                     intSize = myStream.Read(btContent, 0, 512);
56                 }
57                 //关闭流
58                 FStream.Close();
59                 myStream.Close();
60                 flag = true;        //返回true下载成功
61             }
62             catch (Exception)
63             {
64                 FStream.Close();
65                 flag = false;       //返回false下载失败
66             }
67             return flag;
68         }
69     }
70 }

感谢:http://www.cnblogs.com/skyay/p/3880221.html

时间: 2024-11-05 11:24:28

C# Http文件下载公共类(支持断点续传)的相关文章

ftp文件下载公共类

最近做了一个关于ftp文件上传下载的课题,现做一下代码分享 ftp操作公用类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using Sys

php 支持断点续传的文件下载类

php 支持断点续传的文件下载类 分类: php class2013-06-30 17:27 17748人阅读 评论(6) 收藏 举报 php断点续传下载http测试 php 支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理Http头 Range.Content-Range()HTTP头中一般断点下载时才用到Range和Content-Range实体头,Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-3

php实现的支持断点续传的文件下载类

通常来说,php支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理: Http头 Range.Content-Range()HTTP头中一般断点下载时才用到Range和Content-Range实体头,Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-300)Content-Range用于响应头 请求下载整个文件: GET /test.rar HTTP/1.1 Connection: close Host:

Java单线程文件下载,支持断点续传功能

前言: 程序下载文件时,有时会因为各种各样的原因下载中断,对于小文件来说影响不大,可以快速重新下载,但是下载大文件时,就会耗费很长时间,所以断点续传功能对于大文件很有必要. 文件下载的断点续传: 1.先下载临时文件,用于记录已下载大小:     2.http请求时设置Range参数       3.下载此次请求的数据: 直接上代码: 1 package com.test.service; 2 3 import java.io.File; 4 import java.io.InputStream;

[转载]http协议 文件下载原理及多线程断点续传

最近研究了一下关于文件下载的相关内容,觉得还是写些东西记下来比较好.起初只是想研究研究,但后来发现写个可重用性比较高的模块还是很有必要的,我想这也是大多数开发人员的习惯吧.对于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可: GET /Path/FileName HTTP/1.0 Host: www.server.com:80 Accept: */* User-Agent: GeneralDownloadApplication Connection: close 每行用一个“回

一个简单Android下载管理器的实现(支持断点续传)

近期工作不是很忙,时间比较多,所以在空闲时间准备自己编写一个简单的Android下载管理器.该管理器实现如下功能: 1.能够支持正常的下载,暂停,继续,安装操作. 2.支持断点续传,实现暂停继续功能,在推出应用后,再次进入应用依然能正常将文件下载完成. 3.实现实时状态回调,下载进度,速度,一目了然. 以上是UML设计图,这个简单下载器的实现,有几个技术难点,攻克它们问题就迎刃而解. 1.如何实现断点续传:这个问题其实不难,网上也有很多相关资料,基本原理都相同,就是记录下载任务上一次中断的位置,

自己写的一个简单的迅雷下载支持断点续传

当我学习了网络线程,就自己仿照迅雷下载写了一个下载器,支持断点续传 我用的是SWT插件做的界面 界面 package com.yc.xunlei; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Arra

Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

Android公共库--图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工具类(网络.下载.shell.文件.json等等). TrineaAndroidCommon已开源,地

【FTP】FTP文件上传下载-支持断点续传

Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常用)]和[ASCII_FILE_TYPE]两种; 数据连接模式:一般使用LocalPassiveMode模式,因为大部分客户端都在防火墙后面: 1. LocalPassiveMode:服务器端打开数据端口,进行数据传输: 2. LocalActiveMode:客户端打开数据端口,进行数据传输: 系统