网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

ASP.NET获取远程网页下载到本地文件,通过URL生成静态文件的做法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

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

创建一个TestWeb.aspx文件,这个文件后台.cs的代码做法步骤如下:

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

  1. using System;  
  2. using System.Net;  
  3. using System.IO;  
  4. using System.Text; 

第2步:创建获取远程URL并生成文件的方法与文件夹不存在则自动建立方法

获取远程URL并生成文件的代码:
 

  1. /// <summary>  
  2.         /// 生成网页文件  
  3.         /// </summary>  
  4.         /// <param name="url">远程URL</param>  
  5.         /// <param name="filename">生成文件名路径</param>  
  6.         /// <param name="pagecode">目标URL页面编码</param>  
  7.         protected void DownUrltoFile(string url, string filename, string pagecode)  
  8.         {  
  9.             try 
  10.             {  
  11.                 //编码  
  12.                 Encoding encode = Encoding.GetEncoding(pagecode);  
  13.                 //请求URL  
  14.                 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);  
  15.                 //设置超时(10秒)  
  16.                 req.Timeout = 10000;  
  17.                 this.NotFolderIsCreate(filename);  
  18.                 //获取Response  
  19.                 HttpWebResponse rep = (HttpWebResponse)req.GetResponse();  
  20.                 //创建StreamReader与StreamWriter文件流对象  
  21.                 StreamReader sr = new StreamReader(rep.GetResponseStream(),encode);  
  22.                 StreamWriter sw = new StreamWriter(Server.MapPath(filename), false,encode);  
  23.                 //写入内容  
  24.                 sw.Write(sr.ReadToEnd());  
  25.                 //清理当前缓存区,并将缓存写入文件  
  26.                 sw.Flush();  
  27.                 //释放相关对象资源  
  28.                 sw.Close();  
  29.                 sw.Dispose();  
  30.                 sr.Close();  
  31.                 sr.Dispose();  
  32.                 Response.Write("生成文件"   filename   "成功");  
  33.             }  
  34.             catch (Exception ex)  
  35.             {  
  36.                 Response.Write("生成文件"   filename   "失败,原因:"   ex.Message);  
  37.             }  
  38.         } 

以上代码关键知识点,通过HttpWebRequest、HttpWebResponse请求获取远程URL数据,之后使用StreamReader、StreamWriter文件流读写数据写入文件,注意还有编码Encoding。

文件夹不存在则自动建立的代码:

  1. /// <summary>  
  2.        /// 文件夹不存在则创建  
  3.        /// </summary>  
  4.        /// <param name="filename">文件名所在路径</param>  
  5.        protected void NotFolderIsCreate(string filename)  
  6.        {  
  7.            string fileAtDir = Server.MapPath(Path.GetDirectoryName(filename));  
  8.            if (!Directory.Exists(fileAtDir))  
  9.                Directory.CreateDirectory(fileAtDir);  
  10.        } 

下面我们看下如何调用生成文件。
在Page_Load中调用DownUrltoFile()方法,以获取百度首页生成静态文件

  1. protected void Page_Load(object sender, EventArgs e)  
  2.        {  
  3.            //调用方法  
  4.            this.DownUrltoFile("/uploadfile/201101/20/6418147947.png" width="369" />

    运行效果图1 

     

    生成后文件 

     

    打开生成的静态文件

    怎么样,不错吧。

    有了这个方法,可以很简单的通过动态文件URL来生成静态文件了,比如:

    新闻资讯表article有一个字段htmlFile,保存资讯文件名的,内容如html/news/20091224-001.html,在后台添加保存文章后,调用方法:

    1. DownUrltoFile("http://www.aspxcs.net/show.aspx?pid=1""html/news/20091224-001.html""GB2312"); 

     其中URL:http://www.aspxcs.net/show.aspx?pid=1 是动态显示文章,html/news/20091224-001.html是表字段htmlFile预先保存的文件名,这样就可以生成静态文件了。

    以上的做法是不使用模板来生成静态文件的方法,只是换个思路来做。
     

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师