C#实现远程下载Winrar压缩包
发布:apollo | 发布时间: 2008年9月25日最近在构思一个系统,因为本博客(藏金阁)有个皮肤的功能,仔细的看了一下代码好像是远程去下载一个ZTI的文件,里面已经包含了一些图片样式表等数据文件,大家可以去:http://www.rainbowsoft.org/ Z-Blog官方网站下载代码进行查看,个人感觉这样在程序上是比较简单,但是对于模板文件的制作好像是困难比较大,不知道这块他们是这么解决的。这里我考虑了一下,因为我们以后要做的这个系统的关系,模板的制作跟修改应该会是相对来说比较简单的,所以就设想把模板做成压缩包的方式吧,呵呵,下面请见详细的操作代码:
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 System.Web.UI.HtmlControls;
using System.Text;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DownloadClass dd = new DownloadClass();
dd.StrUrl = "http://127.0.0.1/UI.rar";
dd.StrFileName="C:\\1.rar";
dd.DownloadFile();
Response.Write(dd.strError);
}
//测试用线程1断点续传下载网络上的文件到本地电脑
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();
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();
}
}
}
}
代码相对来说比较简单,大家要用的话,直接复制过去就可以了,接下来要考虑做的是:1、对于下载的压缩包要有个进度的控制;2、已经下载成功的压缩包,要实现自动解压的功能,呵呵,应该都不难,改天有用到的时候再来实现吧。
- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





