首页  ·  知识 ·  云计算
ASP.NET获取远程网页下载到本地文件,通过URL生成静态文件的做法
网友     综合  编辑:dezai   图片来源:网络
通过ASP.NET生成静态文件的文章网上有好多文章,而本站也有不少的相关文章教程,通常ASP.NET生成静态文件的做法是使用文件流读取模板内

通过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预先保存的文件名,这样就可以生成静态文件了。
以上的做法是不使用模板来生成静态文件的方法,只是换个思路来做,有好建议可以上我的站www.xueit.com 一起来交流下。
 

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读