源码 | 书库 | 模板 | 特效 | 广告 | 素材 | 工具 | 必备 | ALEXA | 字体
会员投稿 投稿指南 RSS订阅
您当前的位置是:主页>网络编程>.Net编程>

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

www.jz123.cn  2009-12-29   来源:   中国建站会员投稿    dodo    我要投递新闻

  通过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。我们来看下生成的效果图:

         运行效果图1

         生成后文件

 

  打开生成的静态文件

  怎么样,不错吧。

  有了这个方法,可以很简单的通过动态文件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预先保存的文件名,这样就可以生成静态文件了。

  以上的做法是不使用模板来生成静态文件的方法,只是换个思路来做,有好建议可以上我的站 一起来交流下。

  作者:dodo

  出处:http://www.xueit.com/html/2009-12-24/21-1630623130921.html

  本文版权归作者和学IT网共有,欢迎转载,但未经作者同意必须保留此段声明,并且保留原文链接。否则保留追究法律责任的权利。

上一篇:WebForms使用System.Web.Routing 下一篇:一个“简单”的ASP.NET的服务器控件

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图