C#導(dǎo)出網(wǎng)站功能實例代碼講解
這個導(dǎo)出網(wǎng)站功能指通過前臺javascript觸發(fā)進入ashx函數(shù)中,實現(xiàn)將服務(wù)器中某個文件夾(包含其子文件夾和文件)通通復(fù)制到服務(wù)器中另一處位置,當(dāng)然該文件夾本身就是一個網(wǎng)站。所以導(dǎo)出網(wǎng)站最重要的兩個功能,除了javascript的觸發(fā),就是C#ashx文件復(fù)制文件夾的操作。
下面這段代碼就是通過javascript的Request函數(shù)調(diào)用copy.ashx函數(shù)文件,實現(xiàn)將需要復(fù)制的文件夾的子路徑和復(fù)制到所在位置的子路徑的兩個參數(shù)傳進去后臺函數(shù)getWebList函數(shù)就是后臺的一個函數(shù),這個函數(shù)可以不用管他。getBack函數(shù)就需要寫上,可以通過這個函數(shù)獲取結(jié)果。當(dāng)然Webside_load這個函數(shù)也是需要onclick觸發(fā)過來的,這里就不全部列出來了。
以下是C#實現(xiàn)導(dǎo)出網(wǎng)站功能引用片段:
//Webside_load導(dǎo)出網(wǎng)站
function Webside_load(sID, iWebTemplateID) {//alert(0);
//alert(sID); alert(iWebTemplateID);
//被賦值的目錄:就是模板ID下的文件夾以及文件
sTartDir = "http://www.cnblogs.com/uploadfile/webTemplate/" + iWebTemplateID;
//目標(biāo)目錄:就是作品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,可以獲取來自后臺函數(shù)的數(shù)據(jù),而獲取后臺函數(shù)的數(shù)據(jù)就需要下面關(guān)于遍歷加copy的函數(shù)文件了。
以下是引用片段:
<%@ 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("成功導(dǎo)出!");
}
static void MyDirectory_Copy(string sTartDir, string sEndDir)
{
//判斷兩個目錄是否都是存在的
if (!Directory.Exists(sTartDir))
return;
if (!Directory.Exists(sEndDir))
return;
//獲取文件夾名字
string sTarteFolderName = sTartDir.Replace(Directory.GetParent(sTartDir).ToString(), "").Replace(Path.DirectorySeparatorChar.ToString(), "");
//判斷是否該文件夾賦值成功
if (sTartDir == sEndDir + sTarteFolderName)
return;
//要復(fù)制到的路徑
string endPath = sEndDir + Path.DirectorySeparatorChar.ToString() + sTarteFolderName;
if (Directory.Exists(endPath))
{
Directory.Delete(endPath, true);
}
Directory.CreateDirectory(endPath);
//復(fù)制文件
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]));
}
//復(fù)制目錄
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目標(biāo)目錄,得到他們的絕對路徑。再執(zhí)行DirectoryCopy函數(shù),獲得源文件的文件夾名字,將目標(biāo)文件的絕對路徑加上文件夾名賦給新的目標(biāo)文件目錄通過遞歸循環(huán)判斷,執(zhí)行復(fù)制過程。
這種方法類似于之前所提到的C#遍歷文件夾,不過這里是內(nèi)部遍歷復(fù)制,和在系統(tǒng)中遍歷也不是完全一樣。
以上就是C#導(dǎo)出網(wǎng)站功能的全部內(nèi)容介紹,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
使用C#實現(xiàn)將CSV文件內(nèi)容裝配成對象列表
這篇文章主要為大家詳細(xì)介紹了如何使用C#實現(xiàn)將CSV文件內(nèi)容裝配成對象列表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
DevExpress實現(xiàn)GridControl刪除所有行的方法
這篇文章主要介紹了DevExpress實現(xiàn)GridControl刪除所有行的方法,對于C#初學(xué)者有一定的參考借鑒價值,需要的朋友可以參考下2014-08-08

