通過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]