C# 实现导出网站功能

news/2024/5/20 11:32:18/文章来源:https://blog.csdn.net/weixin_30247781/article/details/96235981

C# 实现导出网站功能

   这个导出网站功能指通过前台javascript触发进入ashx函数中,实现将服务器中某个文件夹(包含其子文件夹和文件)通通复制到服务器中另一处位置,当然该文件夹本身就是一个网站。

  所以导出网站最重要的两个功能,除了javascript的触发,就是C#ashx文件复制文件夹的操作。

  下面这段代码就是通过javascript的Request函数调用copy.ashx函数文件,实现将需要复制的文件夹的子路径和复制到所在位置的子路径的两个参数传进去后台函数

    getWebList函数就是后台的一个函数,这个函数可以不用管他。

   getBack函数就需要写上,可以通过这个函数获取结果。

  当然Webside_load这个函数也是需要onclick触发过来的,这里就不全部列出来了。

 

 

复制代码
 1 //Webside_load导出网站
 2 function Webside_load(sID, iWebTemplateID) {//alert(0);
 3     //alert(sID); alert(iWebTemplateID);
 4     //被赋值的目录:就是模板ID下的文件夹以及文件
 5     sTartDir = "http://www.cnblogs.com/uploadfile/webTemplate/" + iWebTemplateID;
 6     //目标目录:就是作品ID下
 7     sEndDir = "http://www.cnblogs.com/uploadfile/showweb/" + sID + "/";
 8     //alert(sourceDir); alert(targetDir);
 9 
10     var variable = ["sTartDir", "sEndDir"];
11     var value = [sTartDir, sEndDir]; //alert(value);
12     Request("getWebList", variable, value, getBack, WebUrl + "http://www.cnblogs.com/copy.ashx", svrNamespace);
13 
14 }
15 function getBack() {
16     var xmlhttp = xmlHttpRequest;
17     var Result = xmlhttp.responseText;
18     alert(Result);
19 }
20     
复制代码

通过上面的javascript,可以获取来自后台函数的数据。

而获取后台函数的数据就需要下面关于遍历加copy的函数文件了。

这个函数我也百度了一下,了解了一写方法之后才写出,度娘还是很强大的,看到了很多人很多好的方法,但感觉下面这种方法比较可取。

复制代码
 1 <%@ WebHandler Language="C#" Class="copy" %>
 2 
 3 using System;
 4 using System.Web;
 5 using System.IO;
 6 
 7 public class copy : IHttpHandler
 8 {
 9     //采用递归的方式遍历,文件夹和子文件中的所有文件。
10     public void ProcessRequest(HttpContext context)
11     {
12         HttpRequest Request = context.Request;
13         HttpResponse Response = context.Response;
14         HttpServerUtility Server = context.Server;
15         //指定输出头和编码
16         context.Response.ContentType = "text/html";
17         Response.Charset = "utf-8";
18 
19         HttpFileCollection fs = HttpContext.Current.Request.Files;
20         
21         string sTartDir = Request.Form["sTartDir"];
22         string sEndDir = Request.Form["sEndDir"];
23         sTartDir = System.Web.HttpContext.Current.Server.MapPath(sTartDir);
24         sEndDir = System.Web.HttpContext.Current.Server.MapPath(sEndDir);
25         //Test
26         //string sTartDir = System.Web.HttpContext.Current.Server.MapPath("../uploadfile/webTemplate/2");
27         //string sEndDir = System.Web.HttpContext.Current.Server.MapPath("../uploadfile/showweb/2012082700000001/");
28         MyDirectory_Copy(sTartDir, sEndDir);
29         
30         Response.Write("成功导出!");
31     }
32     
33     static void MyDirectory_Copy(string sTartDir, string sEndDir)
34     {
35         //判断两个目录是否都是存在的
36         if (!Directory.Exists(sTartDir))
37             return;
38         if (!Directory.Exists(sEndDir))
39             return;
40 
41         //获取文件夹名字
42         string sTarteFolderName = sTartDir.Replace(Directory.GetParent(sTartDir).ToString(), "").Replace(Path.DirectorySeparatorChar.ToString(), "");
43         //判断是否该文件夹赋值成功
44         if (sTartDir == sEndDir + sTarteFolderName)
45             return;
46 
47         //要复制到的路径 
48         string endPath = sEndDir + Path.DirectorySeparatorChar.ToString() + sTarteFolderName;
49         if (Directory.Exists(endPath))
50         {
51             Directory.Delete(endPath, true);
52         }
53 
54         Directory.CreateDirectory(endPath);
55 
56         //复制文件 
57         string[] files = Directory.GetFiles(sTartDir);
58         for (int i = 0; i < files.Length; i++)
59         {
60             File.Copy(files[i], endPath + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files[i]));
61         }
62         //复制目录 
63         string[] dires = Directory.GetDirectories(sTartDir);
64         for (int j = 0; j < dires.Length; j++)
65         {
66             MyDirectory_Copy(dires[j], endPath);
67         }
68     } 
69 
70   
71 
72     public bool IsReusable
73     {
74         get
75         {
76             return false;
77         }
78     }   
79 }
复制代码

 

从前台获得sTartDir源文件目录和 sTartDir目标目录,得到他们的绝对路径。

再执行DirectoryCopy函数,

获得源文件的文件夹名字,将目标文件的绝对路径加上文件夹名赋给新的目标文件目录

通过递归循环判断,执行复制过程。

 

这种方法类似于之前一随便种所提到的C#遍历文件夹,不过这里是内部便利复制,和在系统中遍历也不是完全一样。这个相对比较简单,不过一开始还是借助了度娘百度搜索了一下方法。

转载于:https://www.cnblogs.com/ZuoJinLiang/archive/2012/11/10/2764116.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_756837.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何更有效使用Rational AppScan 扫描大型网站

Rational AppScan 工作原理 Rational AppScan&#xff08;简称 AppScan&#xff09;其实是一个产品家族&#xff0c;包括众多的应用安全扫描产品&#xff0c;从开发阶段的源代码扫描的 AppScan source edition&#xff0c;到针对 Web 应用进行快速扫描的 AppScan standard edit…

WordPress快速增加百度收录,加快网站内容抓取

本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块. 利用百度站长平台提供的链接自动提交代码, 快速增加百度收录, 加快网站内容抓取。 1.创建名为 “baidu_js_push.php”的文件, 内容如下(…

蚂蚁变大象:浅谈常规网站是如何从小变大的

2005年&#xff0c;我开始和朋友们开始拉活儿做网站&#xff0c;当时第一个网站是在linux上用jsp搭建的&#xff0c;到后来逐步的引入了多种框架&#xff0c;如webwork、hibernate等。在到后来&#xff0c;进入公司&#xff0c;开始用c/c&#xff0c;做分布式计算和存储。&…

如何快速把PC网站模板改为自适应模板

网站自适应&#xff0c;很多人都认为是很高级需要很多时间去实现的东西&#xff0c;不愿意去把一个现成的网站改成自适应&#xff0c;宁愿单独另外做一个移动站。我之前觉得实现网站自适应&#xff0c;要设计很多套CSS&#xff0c;并且要结合jQuery&#xff0c;来实现自适应不同…

Mysql在大型网站的应用架构演变

本文主要描述在网站的不同的并发访问量级下&#xff0c;Mysql架构的演变。架构的可扩展性往往和并发是息息相关&#xff0c;没有并发的增长&#xff0c;也就没有必要做高可扩展性的架构&#xff0c;这里对可扩展性进行简单介绍一下。写在最前:本文主要描述在网站的不同的并发访…

《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码

Swift程序不能在Windows其他平台编译和运行&#xff0c;有人提供了一个网站swiftstub.com&#xff0c;左栏是代码编辑窗口&#xff0c;右栏是运行结果窗口。可以在任何平台下编译和运行Swift程序。 本文转自 tony关东升 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.…

一个非常不错的背景纹理图的网站

今天闲逛的时候发现的&#xff1a;http://subtlepatterns.com/。里面的纹理图质量都非常高&#xff0c;并且预览也非常方便&#xff0c;无需注册即可下载&#xff0c;这里强烈推荐下。 转载于:https://www.cnblogs.com/TianFang/p/4008345.html

旅游网站的主页代码_网站建设应该怎么样考虑主页的设计?

网站建设在进行深圳网站建设的那时&#xff0c;主页的设计方案是十分重要的。因为用户在访问网站的那时&#xff0c;先看到的就是网站的主页。因而主页是网站给用户的第一印象。大家在企业深圳网站建设的那时一定要十分重视主页的设计方案&#xff0c;下面大家就来讨论一下如何…

修改图片背景_25个超好用的网站,包括图片,图标,背景等,重点是全部都免费!...

之前&#xff0c;整理了一波免费图片网站&#xff0c;那些好用的免费图片网站分享&#xff0c;不过近几个月发现我浏览的网站有好多新更新。于是&#xff0c;重新整理了一波。本篇文章总共整理了25个网站&#xff0c;包括背景网站&#xff0c;免费图标网站&#xff0c;样机网&a…

asp.net 转 php,转换功能的PHP网站为asp.net

我已经有了一个php站点&#xff0c;现在已经有10年的时间了&#xff0c;并且在过去几年中对它进行了调整和调整&#xff0c;最终将它打造成了一个共同功能的页面&#xff0c;以及大约10个内容页面。不过&#xff0c;我想学习.NET。我在过去曾经谈到.NET在工作&#xff0c;但从来…

使用Python-Flask框架开发Web网站系列课程(二)注册功能

版权声明&#xff1a;如需转载&#xff0c;请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81938381 前言 使用IDE&#xff1a;PyCharm 操作系统: Mac Python版本&#xff1a;3.6 我的邮箱:51263921qq.com 交流群: 372430835 说明&#xff1a; 本次课程gi…

Nginx配置SSL证书部署HTTPS网站

一、什么是 SSL 证书&#xff0c;什么是 HTTPS SSL 证书是一种数字证书&#xff0c;它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道&#xff0c;从而实现&#xff1a; 1、数据信息在客户端和服务器之间的加密传输&#xff0c;保证双方传递信息的安…

如何确定一个网站是用Wordpress开发的

问题 如何确定一个网站是用Wordpress开发的&#xff1f; 答案 打开网页的源码页&#xff0c;可以通过搜索功能查找一下是否源码中包含wp-content。如果有这个文字&#xff0c;说明此网站基本就是使用wordpress程序创建的网站&#xff0c;因为wp-content是wordpress建站程序的一…

如何将网站发布到互联网:

发布前的准备工作&#xff1a; 必备条件&#xff1a; 一台Linux的服务器 centos、Ubuntu一款web服务器 NGINX、Apache、Tomcat属于自己的独立域名   服务器的选择&#xff1a; 服务器的类型&#xff1a;Linux -->生产中一般使用Linuxwindows 1&#xff1a; 从网络购买服务…

怎么修复网站漏洞之metinfo远程SQL注入漏洞修补

2018年11月23日SINE网站安全检测平台&#xff0c;检测到MetInfo最新版本爆出高危漏洞&#xff0c;危害性较大&#xff0c;影响目前MetInfo 5.3版本到最新的 MetInfo 6.1.3版本&#xff0c;该网站漏洞产生的主要原因是MetInfo的上传代码里的参数值没有进行安全过滤&#xff0c;导…

TLS 1.2 协议现漏洞,多个网站受影响

百度智能云 云生态狂欢季 热门云产品1折起>>> TLS 1.2 协议被发现存在漏洞&#xff0c;该漏洞允许攻击者滥用 Citrix 的交付控制器&#xff08;ADC&#xff09;网络设备来解密 TLS 流量。“TLS 1.2 存在漏洞的原因&#xff0c;主要是由于其继续支持一种过时已久的加…

SQL在线学习网站

1.在线编写网页&#xff1a;http://sqlfiddle.com/ 2.SQL菜鸟教程&#xff1a;http://www.runoob.com/sql/sql-intro.html 3.SQL语句在线练习 http://sample.jimstone.com.cn/xsql/ 4.SQL语句测验 http://www.w3school.com.cn/quiz/quiz.asp?quizsql 5.sql语句练习50题(Mysql…

JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招

一般商业网站都有一个语言的需求&#xff0c;就是为了照顾使用正体中文的国人&#xff0c;会特地提供一个切换到正体中文的选项&#xff08;或曰“繁体中文”&#xff09;。传统做法是在服务端完成的&#xff0c;即通过某些控件或者过滤器转换文本语言。这里笔者介绍一种简单可…

动手实现简易网站目录扫描器——WebScanner

效果展示 项目目录&#xff1a; 引言 不知是否有小伙伴在学习Web安全相关的知识&#xff0c;如果有的话&#xff0c;那应该对XSS&#xff0c;SQL注入&#xff0c;文件上传&#xff0c;一句话脚本等等基本功应该是再熟悉不过了。最初学习的时候是它&#xff0c;实战最先测试的…