C#導出網站功效實例代碼講授。本站提示廣大學習愛好者:(C#導出網站功效實例代碼講授)文章只能為提供參考,不一定能成為您想要的結果。以下是C#導出網站功效實例代碼講授正文
這個導出網站功效指經由過程前台javascript觸發進入ashx函數中,完成將辦事器中某個文件夾(包括其子文件夾和文件)統統復制到辦事器中另外一處地位,固然該文件夾自己就是一個網站。所以導出網站最主要的兩個功效,除javascript的觸發,就是C#ashx文件復制文件夾的操作。
上面這段代碼就是經由過程javascript的Request函數挪用copy.ashx函數文件,完成將須要復制的文件夾的子途徑和復制到地點地位的子途徑的兩個參數傳出來後台函數getWebList函數就是後台的一個函數,這個函數可以不消管他。getBack函數就須要寫上,可以經由過程這個函數獲得成果。固然Webside_load這個函數也是須要onclick觸發過去的,這裡就不全體列出來了。
以下是C#完成導出網站功效援用片斷:
//Webside_load導出網站
function Webside_load(sID, iWebTemplateID) {//alert(0);
//alert(sID); alert(iWebTemplateID);
//被賦值的目次:就是模板ID下的文件夾和文件
sTartDir = "http://www.cnblogs.com/uploadfile/webTemplate/" + iWebTemplateID;
//目的目次:就是作品ID下
sEndDir = "http://www.cnblogs.com/uploadfile/showweb/" + sID + "/";
//alert(sourceDir); alert(targetDir);
var variable = ["sTartDir", "sEndDir"];
var value = [sTartDir, sEndDir]; //alert(value);
Request("getWebList", variable, value, getBack, WebUrl + "http://www.cnblogs.com/copy.ashx", svrNamespace);
}
function getBack() {
var xmlhttp = xmlHttpRequest;
var Result = xmlhttp.responseText;
alert(Result);
}
經由過程下面的javascript,可以獲得來自後台函數的數據,而獲得後台函數的數據就須要上面關於遍歷加copy的函數文件了。
以下是援用片斷:
<%@ WebHandler Language="C#" Class="copy" %>
using System;
using System.Web;
using System.IO;
public class copy : IHttpHandler
{
//采取遞歸的方法遍歷,文件夾和子文件中的一切文件。
public void ProcessRequest(HttpContext context)
{
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
HttpServerUtility Server = context.Server;
//指定輸入頭和編碼
context.Response.ContentType = "text/html";
Response.Charset = "utf-8";
HttpFileCollection fs = HttpContext.Current.Request.Files;
string sTartDir = Request.Form["sTartDir"];
string sEndDir = Request.Form["sEndDir"];
sTartDir = System.Web.HttpContext.Current.Server.MapPath(sTartDir);
sEndDir = System.Web.HttpContext.Current.Server.MapPath(sEndDir);
//Test
//string sTartDir = System.Web.HttpContext.Current.Server.MapPath("../uploadfile/webTemplate/2");
//string sEndDir = System.Web.HttpContext.Current.Server.MapPath("../uploadfile/showweb/2012082700000001/");
MyDirectory_Copy(sTartDir, sEndDir);
Response.Write("勝利導出!");
}
static void MyDirectory_Copy(string sTartDir, string sEndDir)
{
//斷定兩個目次能否都是存在的
if (!Directory.Exists(sTartDir))
return;
if (!Directory.Exists(sEndDir))
return;
//獲得文件夾名字
string sTarteFolderName = sTartDir.WordStr(Directory.GetParent(sTartDir).ToString(), "").WordStr(Path.DirectorySeparatorChar.ToString(), "");
//斷定能否該文件夾賦值勝利
if (sTartDir == sEndDir + sTarteFolderName)
return;
//要復制到的途徑
string endPath = sEndDir + Path.DirectorySeparatorChar.ToString() + sTarteFolderName;
if (Directory.Exists(endPath))
{
Directory.Delete(endPath, true);
}
Directory.CreateDirectory(endPath);
//復制文件
string[] files = Directory.GetFiles(sTartDir);
for (int i = 0; i < files.Length; i++)
{
File.Copy(files[i], endPath + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files[i]));
}
//復制目次
string[] dires = Directory.GetDirectories(sTartDir);
for (int j = 0; j < dires.Length; j++)
{
MyDirectory_Copy(dires[j], endPath);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
早年台取得sTartDir源文件目次和 sTartDir目的目次,獲得他們的相對途徑。再履行DirectoryCopy函數,取得源文件的文件夾名字,將目的文件的相對途徑加上文件夾名賦給新的目的文件目次經由過程遞歸輪回斷定,履行復制進程。
這類辦法相似於之前所提到的C#遍歷文件夾,不外這裡是外部遍歷復制,和在體系中遍歷也不是完整一樣。
以上就是C#導出網站功效的全體內容引見,願望對年夜家的進修有所贊助。