`
不思量0211
  • 浏览: 4434 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

项目文件部署功能

 
阅读更多

将更新文件夹压缩为zip格式上传,解析更新。

大致步骤为:

1、前台上传文件;

2、上传文件至服务器;

3、验证上传版本信息;

4、更新文件;

 

 

前台html&js代码:

<form name="cForm" action=""  enctype="multipart/form-data"  method="post">
<input name="file" id="file" style="width: 400px" type="file" />
<input type="button" class="btn" value="数据上传" onclick="dopass(this.form)" />
</form>

<iframe name="uploadFrame" height="0px" width="0px" style="display: none;"></iframe>

 

function dopass(form) {
 
	if (form.file.value == '') {
		alert('请选择需要升级的文件!');
		return false;
	}

	if ((form.file.value.toLocaleUpperCase()).indexOf('.ZIP') <= 0) {
		alert('上传文件只能为 zip 文件!');
		return false;
	}
	 
	if (confirm('将执行系统升级,确定要升级当前系统吗?')) {
 	          document.cForm.action =  "do_deploy";
	          document.cForm.target = "uploadFrame";
	          document.cForm.submit();
	} else {
		return false;
	}
}

在Controller层获取文件-->上传服务器-->部署文件:

@RequestMapping("/do_deploy")
        public void doDeploy(HttpServletRequest request,HttpServletResponse response) {
		try {
			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 
			OutData od = deployService.uploadDeployFile(multipartRequest);
			//od为上传文件反馈
                       if(od.getCode() == -1) {
				logger.warn(od.getMsg());
				render(response, "<script>alert('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8");
				return;
			}
			String downPath = od.getMsg();//上传文件所在路径
			String rootPath = multipartRequest.getSession().getServletContext().getRealPath("/");/获取根目录
			File zip = new File(downPath);
			//获取版本文件进行验证
                        File versionFile = deployService.getVersionFile(zip, "version.xml", rootPath);
			od = deployService.versionCheck(versionFile, rootPath);
			if(od.getCode() == -1) {
				logger.warn(od.getMsg());
				render(response, "<script>alert('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8");
				return;
			}
			 //文件部署
                        od = deployService.deployProject(zip, rootPath);
			if(od.getCode() == -1) {
				logger.warn(od.getMsg());
				render(response, "<script>parent.alertMessage('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8");
				return;
			}
			render(response, "<script>parent.alertMessage('部署成功!');parent.grid0.load();</script>", "text/html;charset=UTF-8");
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("内部出错,出错原因:" + e.getMessage());
			render(response, "<script>parent.alertMessage('内部出错!出错代码:" + e.getMessage() + "');parent.grid0.load();</script>", "text/html;charset=UTF-8");
		}
	}
 public  void render(HttpServletResponse response, String text,
   String contentType) {
 
 try {
  
     response.setHeader("Pragma", "No-cache");
 
     response.setHeader("Cache-Control", "no-cache");

     response.setDateHeader("Expires", 0);

     response.setContentType(contentType);
 
     response.getWriter().write(text);

     response.getWriter().close();

  } catch (IOException e) {
 
  e.printStackTrace();
  
}


 }

}

 deployService代码:

public OutData deployProject(File file, String rootPath) {
		OutData od = new OutData();
		ZipFile zipFile = null;
		try {
			zipFile = new ZipFile(file, "GBK");
			ZipEntry ze = null;
			Enumeration enumeration = zipFile.getEntries(); 
			Map<String, List<String>> fileLimit = this.getDeployFilesDetails();
			String filesInfo="";
			while (enumeration.hasMoreElements()) {
				ze = (ZipEntry) enumeration.nextElement();
			String entryName = ze.getName();
		      // File.separator系统分隔符 
                        String path  = rootPath +File.separator + entryName;
				logger.info("部署文件:" + path);
				if (ze.isDirectory()) {
					File decompressDirFile = new File(path);
					if (!decompressDirFile.exists()) {
						decompressDirFile.mkdirs();
					}
				}else {
					createFile(path, zipFile, ze);
					filesInfo+="||"+path;
				}
				
				od.setMsg("部署文件:"+filesInfo);
			}

		} catch (IOException e) {
			od.setCode(-1);
			od.setMsg(e.getMessage());
		} finally {
			if(zipFile != null)
				try {
					zipFile.close();
				} catch (IOException e) {
					zipFile =null;
				}
		}

		return od;
	}
 private File createFile(String path, ZipFile zipFile, ZipEntry ze) throws IOException{
  
         File decompressFile = new File(path);
 
         if(!decompressFile.getParentFile().exists())
            decompressFile.getParentFile().mkdirs();
 
         if(!decompressFile.getParentFile().exists()) 
            decompressFile.createNewFile();
 
         OutputStream outputStream = new FileOutputStream(decompressFile);
 
         InputStream inputStream = zipFile.getInputStream(ze); 
       
  int length = 0;
 
         byte b[] = new byte[1024]; 

         while ((length = inputStream.read(b)) > 0) {
  
            outputStream.write(b, 0, length);
 
            outputStream.flush();
 
          }
  
           inputStream.close();
 
           outputStream.close();
 
           return decompressFile;
 
 }

 

 

分享到:
评论

相关推荐

    Jboss项目部署文档

    Jboss 项目部署文档是指在 Jboss 服务器上部署项目的详细步骤,包括环境变量的配置、项目打包、配置文件的修改、JNDI 的配置等。以下是 Jboss 项目部署文档的详细知识点: 一、环境变量配置 在部署 Jboss 项目之前...

    mars-MP3项目整合(包括源码+tomcat部署文件)

    标签同样是“mars-MP3项目整合(包括源码+tomcat部署文件)”,它再次强调了项目的关键特性,即提供了完整的源代码和部署方案,这对于开发者、学生或者对Java Web技术感兴趣的人来说,是一个宝贵的资源,可以用来学习...

    项目部署方案(模板).docx

    《项目部署方案详解》 项目部署是软件开发过程中的关键环节,它涉及到系统的硬件环境、软件环境、中间件安装、数据库配置以及应用程序的部署与验证等多个方面。以下是一份详尽的项目部署方案模板,旨在为您的软件...

    svn项目共享部署文件

    Subversion(SVN)是一种集中式版本控制系统,它允许团队成员对项目文件进行版本控制,包括源代码、文档和其他资源。每个团队成员可以在本地工作,然后通过提交更改到中央仓库,与其他人同步。SVN的主要功能包括:...

    C# 安装部署项目

    C# 安装部署项目 C# 安装部署项目是使用 Visual Studio 创建的安装项目,以便将应用程序部署到目标机器上。下面将详细介绍 C# 安装部署项目的创建和配置过程。 一、新建安装部署项目 要创建一个新的安装部署项目...

    企业项目管理部署指南

    此外,还包括计划文件、功能规范、分类设置示例、变更请求日志和测试案例等,这些工具帮助跟踪项目进度,控制变更影响,验证系统功能,并确保最终配置符合用户期望。 综上所述,企业项目管理部署是一个涉及多学科...

    java项目部署步骤

    通常,开发者会将WAR文件部署到Tomcat的`webapps`目录下。具体步骤如下: 1. 将WAR文件复制到Tomcat的`webapps`目录下。 2. 执行Maven命令`clean package`来打包项目为WAR文件。 3. 如果WAR文件名与目录名称相同,...

    struts2项目部署

    5. **打包项目**:将所有项目文件和目录打包成WAR文件。在命令行中,可以使用`jar`命令或者IDE的相应功能完成此步骤。 6. **部署WAR文件**:将WAR文件复制到Tomcat的`webapps`目录下。Tomcat会自动解压并部署该文件...

    java项目的部署

    Tomcat是一款轻量级且功能强大的Web容器,广泛应用于Java Web应用的部署。安装与配置方法同样可以参考上述文章。 - **数据库**:大部分Java Web应用都需要使用数据库来存储数据。这里以MySQL为例,其安装与配置方法...

    把web项目部署到linux服务器

    在部署自己的项目时,需要首先将项目打包为 war 格式,可以使用 Eclipse 的 Export 功能,选择 war 格式,然后将其上传到服务器的 admin-tomcat/webapps 目录下。上传完成后,可以使用 lsof -i:8022 命令查看 8022 ...

    tomcat 部署java项目 jar

    - 标签中的“源码”可能指的是Java项目的源代码,开发者可以查看和修改这些代码来实现特定功能。 - “工具”可能包括IDE(如Eclipse, IntelliJ IDEA)、构建工具(如Maven, Gradle)、版本控制系统(如Git)等,...

    weblogic部署项目详细步骤使用手册

    * Weblogic 的部署方式:Weblogic 提供了多种部署方式,例如 war 文件部署、ear 文件部署、 exploded 目录部署等。 * Weblogic 的安全机制:Weblogic 提供了多种安全机制,例如身份验证、授权、加密等,可以确保 Web...

    .net项目的安装部署

    在.NET项目的开发完成后,安装和部署是将应用程序推送到生产环境的关键步骤。本文将深入探讨ASP.NET项目安装部署的详细过程,以及在此过程中需要注意的重要问题。 首先,我们需要确保开发环境和目标部署环境的兼容...

    Weblogic项目部署文档

    - **项目部署包**: 通常是指待部署的应用程序或者项目的打包文件。 **1.2 安装Weblogic** - **步骤一**: 启动Weblogic安装向导。 - **操作**: 点击安装向导图标开始安装过程。 - **步骤二**: 配置安装目录。 - **...

    Java项目Windows环境一键部署_javawindows环境一键部署_

    - 使用批处理脚本(.bat)或PowerShell脚本,可以自动化完成复制项目文件、设置环境变量、启动服务等操作。这一步骤是实现“一键部署”的关键,通过脚本标准化部署流程,避免手动操作的错误和重复工作。 5. **配置...

    JAVA文件上传,可直接部署

    这个“JAVA文件上传,可直接部署”的项目提供了一个经过调试并可成功运行的示例,旨在帮助开发者解决在实现文件上传过程中遇到的问题。从描述来看,作者在尝试运行网络上的不同示例时遇到了错误,但通过对代码进行...

    宝塔部署Django项目.docx

    Nginx是一个流行的Web服务器软件,它提供了许多实用的功能来帮助开发者快速部署和管理Web项目。在这个步骤中,需要安装Nginx 1.16.1版本,注意其他版本可能会出现未知的错误。 第3步:安装Python项目管理器 Python...

    web 项目的部署问题

    部署完成后,应通过浏览器访问网站,检查功能是否正常,页面是否能正确加载,数据库交互是否顺利,以及安全性设置是否生效。 总之,.NET中Web项目的部署涉及多个环节,从环境配置、项目打包、IIS设置到问题排查,每...

Global site tag (gtag.js) - Google Analytics