C#導(dǎo)出網(wǎng)站功能實例代碼講解
這個導(dǎo)出網(wǎng)站功能指通過前臺javascript觸發(fā)進(jìn)入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ù)傳進(jìn)去后臺函數(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í)有所幫助。
上一篇:C#繪制曲線圖的方法
欄 目:C#教程
下一篇:C#裝箱和拆箱原理詳解
本文標(biāo)題:C#導(dǎo)出網(wǎng)站功能實例代碼講解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6924.html
您可能感興趣的文章
- 01-10使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 01-10微信開放平臺之網(wǎng)站授權(quán)微信登錄功能
- 01-10C#實現(xiàn)附件上傳和下載功能
- 01-10C#實現(xiàn)類似jQuery的方法連綴功能
- 01-10C#怎么實現(xiàn)手機(jī)短信發(fā)送功能
- 01-10C#基于cookie實現(xiàn)的購物車功能
- 01-10C#簡單實現(xiàn)文件上傳功能
- 01-10詳解C#中通過委托來實現(xiàn)回調(diào)函數(shù)功能的方法
- 01-10C# MVC模式下商品抽獎功能實現(xiàn)
- 01-10C#微信開發(fā)之微信公眾號標(biāo)簽管理功能


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文