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