C#導(dǎo)出網(wǎng)站功能實(shí)例代碼講解
這個(gè)導(dǎo)出網(wǎng)站功能指通過(guò)前臺(tái)javascript觸發(fā)進(jìn)入ashx函數(shù)中,實(shí)現(xiàn)將服務(wù)器中某個(gè)文件夾(包含其子文件夾和文件)通通復(fù)制到服務(wù)器中另一處位置,當(dāng)然該文件夾本身就是一個(gè)網(wǎng)站。所以導(dǎo)出網(wǎng)站最重要的兩個(gè)功能,除了javascript的觸發(fā),就是C#ashx文件復(fù)制文件夾的操作。
下面這段代碼就是通過(guò)javascript的Request函數(shù)調(diào)用copy.ashx函數(shù)文件,實(shí)現(xiàn)將需要復(fù)制的文件夾的子路徑和復(fù)制到所在位置的子路徑的兩個(gè)參數(shù)傳進(jìn)去后臺(tái)函數(shù)getWebList函數(shù)就是后臺(tái)的一個(gè)函數(shù),這個(gè)函數(shù)可以不用管他。getBack函數(shù)就需要寫上,可以通過(guò)這個(gè)函數(shù)獲取結(jié)果。當(dāng)然Webside_load這個(gè)函數(shù)也是需要onclick觸發(fā)過(guò)來(lái)的,這里就不全部列出來(lái)了。
以下是C#實(shí)現(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); }
通過(guò)上面的javascript,可以獲取來(lái)自后臺(tái)函數(shù)的數(shù)據(jù),而獲取后臺(tái)函數(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) { //判斷兩個(gè)目錄是否都是存在的 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; } } }
從前臺(tái)獲得sTartDir源文件目錄和 sTartDir目標(biāo)目錄,得到他們的絕對(duì)路徑。再執(zhí)行DirectoryCopy函數(shù),獲得源文件的文件夾名字,將目標(biāo)文件的絕對(duì)路徑加上文件夾名賦給新的目標(biāo)文件目錄通過(guò)遞歸循環(huán)判斷,執(zhí)行復(fù)制過(guò)程。
這種方法類似于之前所提到的C#遍歷文件夾,不過(guò)這里是內(nèi)部遍歷復(fù)制,和在系統(tǒng)中遍歷也不是完全一樣。
以上就是C#導(dǎo)出網(wǎng)站功能的全部?jī)?nèi)容介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。
上一篇:C#繪制曲線圖的方法
欄 目:C#教程
下一篇:C#裝箱和拆箱原理詳解
本文標(biāo)題:C#導(dǎo)出網(wǎng)站功能實(shí)例代碼講解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6924.html
您可能感興趣的文章
- 01-10使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 01-10微信開(kāi)放平臺(tái)之網(wǎng)站授權(quán)微信登錄功能
- 01-10C#實(shí)現(xiàn)附件上傳和下載功能
- 01-10C#實(shí)現(xiàn)類似jQuery的方法連綴功能
- 01-10C#怎么實(shí)現(xiàn)手機(jī)短信發(fā)送功能
- 01-10C#基于cookie實(shí)現(xiàn)的購(gòu)物車功能
- 01-10C#簡(jiǎn)單實(shí)現(xiàn)文件上傳功能
- 01-10詳解C#中通過(guò)委托來(lái)實(shí)現(xiàn)回調(diào)函數(shù)功能的方法
- 01-10C# MVC模式下商品抽獎(jiǎng)功能實(shí)現(xiàn)
- 01-10C#微信開(kāi)發(fā)之微信公眾號(hào)標(biāo)簽管理功能


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文