ASP.NET获取远程网页下载到本地文件

.NET技术    2009-12-25 12:22  

  通过ASP.NET天生静态文件的文章网上有很多多少文章,而本站也有不少的相干文章教程,通常ASP.NET天生静态文件的做法是利用文件流读取模板内容,之后更换模板内容中相干关键字,再天生静态文件。本文的做法另类一点,通过URL来天生静态文件,下面来看下是怎样实现吧。

  创建一个TestWeb.aspx文件,这个文件背景.cs的代码做法步调如下:

  第1步:先引用如下下令空间

  using System;

  using System.Net;
  using System.IO;
  using System.Text;

  第2步:创建获取长途URL并天生文件的要领与文件夹不存在则主动创建要领

  获取长途URL并天生文件的代码:

 C# Code [http://www.xueit.com]
/// <summary> /// 天生网页文件 /// </summary> /// <param name="url">长途URL</param> /// <param name="filename">天生文件名路径</param> /// <param name="pagecode">目标URL页面编码</param> protected void DownUrltoFile(string url, string filename, string pagecode) { try { //编码 Encoding encode = Encoding.GetEncoding(pagecode); //恳求URL HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); //设置超时(10秒) req.Timeout = 10000; this.NotFolderIsCreate(filename); //获取Response HttpWebResponse rep = (HttpWebResponse)req.GetResponse(); //创建StreamReader与StreamWriter文件流东西 StreamReader sr = new StreamReader(rep.GetResponseStream(),encode); StreamWriter sw = new StreamWriter(Server.MapPath(filename), false,encode); //写入内容 sw.Write(sr.ReadToEnd()); //清该当前缓存区,并将缓存写入文件 sw.Flush(); //开释相干东西资源 sw.Close(); sw.Dispose(); sr.Close(); sr.Dispose(); Response.Write("天生文件" filename "告成"); } catch (Exception ex) { Response.Write("天生文件" filename "失败,缘故起因:" ex.Message); } }

  以上代码关键知识点,通过HttpWebRequest、HttpWebResponse恳求获取长途URL数据,之后利用StreamReader、StreamWriter文件流读写数据写入文件,细致另有编码Encoding。

  文件夹不存在则主动创建的代码:

 C# Code [http://www.xueit.com]
/// <summary> /// 文件夹不存在则创建 /// </summary> /// <param name="filename">文件名地点路径</param> protected void NotFolderIsCreate(string filename) { string fileAtDir = Server.MapPath(Path.GetDirectoryName(filename)); if (!Directory.Exists(fileAtDir)) Directory.CreateDirectory(fileAtDir); }

  下面我们看下怎样调用天生文件。

  在Page_Load中调用DownUrltoFile()要领,以获取百度首页天生静态文件

   

 C# Code [http://www.xueit.com]
protected void Page_Load(object sender, EventArgs e) { //调用要领 this.DownUrltoFile("http://www.baidu.com", "html/baidu.htm", "GB2312"); }

  由于百度首页是Gb2312编码,以是上面的调用要领输入GB2312。我们来看下天生的结果图:

Www.Hdut.Com

  运行结果图1

Www.Hdut.Com

  天生后文件

 Www.Hdut.Com

  打开天生的静态文件

  怎么样,不错吧。

  有了这个要领,可以很大略的通过动态文件URL来天生静态文件了,比如:

  消息资讯表article有一个字段htmlFile,生存资讯文件名的,内容如html/news/20091224-001.html,在背景添加生存文章后,调用要领:

 Code [http://www.xueit.com]
DownUrltoFile("http://www.xueit.com/show.aspx?pid=1", "html/news/20091224-001.html", "GB2312");

  此中URL:http://www.xueit.com/show.aspx?pid=1 是动态表现文章,html/news/20091224-001.html是表字段htmlFile预老师存的文件名,如许就可以天生静态文件了。

  以上的做法是不利用模板来天生静态文件的要领,只是换个思路来做,有好发起可以上我的站 一起来交换下。

在线留言

我要留言