zoukankan
html css js c++ java
利用线程下载网页中的程序并另存到本地(转载收藏)
前台页面要输入下载地址和另存路径
private
void
BtnDown_Click(
object
sender, System.EventArgs e)
{
//
开始线程下载文件
DownloadClass downFile
=
new
DownloadClass();
downThread
=
new
Thread(
new
ThreadStart(downFile.DownloadFile));
downFile.StrUrl
=
txtFromUrl.Text;
downFile.StrFileName
=
txtSavePath.Text;
downThread.Start();
}
DownloadClass.cs (注意命名空间哦。)
下载并保存下载文件的类
using
System;
using
System.IO;
using
System.Net;
namespace
HGJ.DBA
{
/**/
///
<summary>
///
DownloadClass 的摘要说明。
///
</summary>
public
class
DownloadClass
{
//
打开上次下载的文件或新建文件
public
string
StrUrl;
//
文件下载网址
public
string
StrFileName;
//
下载文件保存地址
public
string
strError;
//
返回结果
public
long
lStartPos
=
0
;
//
返回上次下载字节
public
long
lCurrentPos
=
0
;
//
返回当前下载字节
public
long
lDownloadFile;
//
返回当前下载文件长度
public
void
DownloadFile()
{
System.IO.FileStream fs;
if
(System.IO.File.Exists(StrFileName))
{
fs
=
System.IO.File.OpenWrite(StrFileName);
lStartPos
=
fs.Length;
fs.Seek(lStartPos,System.IO.SeekOrigin.Current);
//
移动文件流中的当前指针
}
else
{
fs
=
new
System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
lStartPos
=
0
;
}
//
打开网络连接
try
{
System.Net.HttpWebRequest request
=
(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);
long
length
=
request.GetResponse().ContentLength;
lDownloadFile
=
length;
if
(lStartPos
>
0
)
request.AddRange((
int
)lStartPos);
//
设置Range值
//
向服务器请求,获得服务器回应数据流
System.IO.Stream ns
=
request.GetResponse().GetResponseStream();
//
这里可直接将获取到的下载数据存入数据库,传递:nbytes 即可对应Image类型
byte
[] nbytes
=
new
byte
[
512
];
int
nReadSize
=
0
;
nReadSize
=
ns.Read(nbytes,
0
,
512
);
while
( nReadSize
>
0
)
{
fs.Write(nbytes,
0
,nReadSize);
nReadSize
=
ns.Read(nbytes,
0
,
512
);
lCurrentPos
=
fs.Length;
}
fs.Close();
ns.Close();
strError
=
"
下载完成
"
;
}
catch
(Exception ex)
{
fs.Close();
strError
=
"
下载过程中出现错误:
"
+
ex.ToString();
}
}
}
}
查看全文
相关阅读:
String源码分析
solr IK分词器
solr安装
hadoop HA集群搭建(亲测)
dubbo-admin安装
关于idea中使用lamb表达式报错:ambda expressions are not supported at this language level
web项目数据存入mysql数据库中文乱码问题
dom4j解析xml
js监听键盘提交表单
Location replace() 方法
原文地址:https://www.cnblogs.com/hanguoji/p/739923.html
最新文章
springboot 集成日志 yml配置
navicat mysql 连接本地 忘记密码 查看密码 操作
mysql启服务的时候报1067错误解决办法
java springMVC 极致验证 非demo版
启的服务有时候突然报错:org.xml.sax.SAXParseException: schema_reference.4
分表添加字段,添加注释,存储过程及游标
mysql 判断索引是否存在,存在则删除再创建索引(分表) 存储过程
mysql和Oracle 备份表
Elasticsearch笔记六之中文分词器及自定义分词器
微信开放平台PC端扫码登录功能个人总结
热门文章
软件测试基础知识七(软件测试流程)
软件测试基础知识六(软件测试投入与产出)
软件测试基础知识五(软件测试的分工)
软件测试基础知识四(BUG的生命周期)
软件测试基础知识三(浅谈测试用例)
Javascript —— 有向图广度优先搜索
jQuery——表单异步提交
awk 数据处理小技巧
机器学习 —— 机器学习的动机和应用
shell 脚本的坑
Copyright © 2011-2022 走看看