需求描述:

前段时间写了一篇博客《Java实现对文本文件MD5加密并ftp传送到远程主机目录》,实现了一部分的业务需求。然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统并不支持,因此现在需要在这个的基础上新开发一个功能,要求可以实现该业务场景,传送多个文件到远程主机指定的目录上。

业务梳理:

对于此需求,我有两个想法,想法一是通过点击文件上传按钮的选择文件的时候,设置让用户选择多个文件,Java端对于文件的对象的信息设置成数组,但是这个方法,我尝试设置Struts的<s:file ></s:file>标签属性multiple="multiple",也并没有实现想要达到的效果,查阅全网多篇博客无果不得不放弃想法一。

想法二是用户把需要上传的文本文件上传,打成一个zip包,Java获取到该文件之后,对其进行解压,然后遍历该目录下的文件,对每一个文件进行MD5加密,生成同名的MD5文件,然后获取需要传送到的主机的IP、账户、密码、以及上传的目录信息。

其大致的流程图如下图所示:

程序实现:

一、前台界面

由于是新增的业务场景,所以前台界面也需要修改,提供下拉选项给业务人员选择。

需要对业务人员上传的文件类型做下限制,写在JS的函数里面

实现的前台界面如图所示:

二、文件对象的操作

用户上传文件后,系统通过Struts2获取到文件对象,复制到datapath随机生成的子目录下

这里开始对文件类型进行判断,如果是后缀为zip的文件类型,调用ZipUtil.unzip(newFile, datapath)方法对文件对象进行解压,解压之后,遍历该目录下的文件,如果后缀为".000",则进行md5加密,生成同名MD5文件,这个动作是通过调用filemd5.getMD5(fortmp)方法来完成的。最后是操作完之后,为避免把zip文件也上传,所以这里通过newFile.delete()把文件删掉。

解压的方法ZipUtil.unzip,这里用到ant.jar,需要导入一下,或者添加maven的pom依赖,这里只写了一个zip的解压方法,并没有写到其它格式如rar的解压。

MD5的加密算法以及生成MD5文件,可以参考上一篇博客,Java实现对文本文件MD5加密并ftp传送到远程主机目录,这里不再描述,或者参考下网上博客。

三、获取主机的IP、账户、密码、目录信息以及实现上传

这些操作在上一篇博客都有提及,这里就只发一张图片吧

前台界面的OperationType对应数据库配置表中的AUDIT_FLAG,通过Java调用Ibaits下面图片的sql就可以获取到相关的信息了

实现把当前文件夹的文件上传在上一篇博客也有提及,这里我就只贴一张图

最后是反馈结果

总结:

本篇博客在上一篇博客的基础上实现对zip上传文件的解压,对解压后的文件进行MD5加密生成同名MD5文件,然后实现ftp上传到远程主机上。其中业务流程如下图所示

如果你有需要你可以到https://github.com/rootzhongfengshan/the-repository-of-zhongfengshan.git中的Java_project目录下获取zip的源码。

Java实现zip压缩文件的解压的更多相关文章

  1. PHP zip压缩文件及解压

    PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...

  2. Android 下载zip压缩文件并解压

    网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,在此记录一下下载zip文件并直接解压的方法. 其实也很简单,就是把下载文件和解压zip文件结合到一起.下面即代码: URLConne ...

  3. SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html

    SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...

  4. pclzip 压缩文件与解压

    类PclZip.class.php下载:PclZip.rar<?php header("Content-type: text/html; charset=utf-8"); f ...

  5. Unity3D研究院之LZMA压缩文件与解压文件

    原地址:http://www.xuanyusong.com/archives/3095 前两天有朋友告诉我Unity的Assetbundle是LZMA压缩的,刚好今天有时间那么就研究研究LZMA.它是 ...

  6. Android下载压缩文件与解压案例

    ackage com.example.jsontest.biz; import java.io.BufferedInputStream; import java.io.BufferedOutputSt ...

  7. java生成zip压缩文件,解压缩文件

    1.生成zip public static void main(String[] args) { try { // testZip("c:\\temp.txt", "c: ...

  8. 【VC++技术杂谈008】使用zlib解压zip压缩文件

    最近因为项目的需要,要对zip压缩文件进行批量解压.在网上查阅了相关的资料后,最终使用zlib开源库实现了该功能.本文将对zlib开源库进行简单介绍,并给出一个使用zlib开源库对zip压缩文件进行解 ...

  9. Linux下*.tar.bz2等文件如何解压--转

    如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包.压缩解压 linux下怎么解后缀名是gzip的文件? ...

随机推荐

  1. Blender软件基本介绍(3D建模软件)

    1.Blender的好处: 1>.开源免费 2>.体积比较小 3>.和Unity的交互比较好(一般建模软件需要导出FBX的文件,然后用到Unity中,而Blender不需要导出,只需 ...

  2. npm 命令

    npm instal moduleName [-g]  :安装模块,有 -g 或 --global 是全局安装 npm install -g cnpm --registry=https://regis ...

  3. Java框架spring 学习笔记(十五):操作MySQL数据库

    新建一个工程,添加对数据库的支持 下载mysql驱动包 mysql-connector-java-5.1.7-bin.jar,快捷键ctrl+alt+shift+s,添加jar包到工程 编写JdbcT ...

  4. oracle中 特殊字符 转义 (&)

    在dml中,若操作的字符中有 & 特殊字符,则会被oracle视作是输入变量的标志,此时需要用转义字符来进行转义. 1.”&“ 转义 这个是Oracle里面用来识别自定义变量的设置,现 ...

  5. d3.js svg中 g 标签问题一览

    svg 中的g标签, 算是比较特殊 1 没有x y属性 2 没有width height 属性 3 不能fill 4 .... g标签基本只管分组问题, 其他功能一概不提供 要解决这些问题, 直接在g ...

  6. iis网站部署常见错误

    sqlserver 授权登录名没有db_owner权限 数据库连接字符串端口没开,连接形式:192.168.0.1,1433

  7. antd-react-mobile(踩坑记录)

    1.按照官网步骤进行, $ npm install -g create-react-app # 注意:工具会自动初始化一个脚手架并安装 React 项目的各种必要依赖,如果在过程中出现网络问题,请尝试 ...

  8. Swift Realm 完整使用记录

    新项目用到了数据库,本来之前用的都是 SQL,但是语法写的实在是恶心,所以使用 Realm 尝试一下. 1.我使用的 pod 库,所以先 pod 库安装一下,安装完别忘了先编译一下,不然 import ...

  9. 使用CSV控件方法实现参数化

    一.录制脚本 二.下面介绍如何使用CSV控件方法实现参数化 1.  添加-->配置元件-->csv Data Set Config Filename:文件的来源 Variable Name ...

  10. 4.7做作业时发现,内联元素设置宽高背景以后正常不显示,但是设置了position:absolute;以后就可以显示了。起到了和display:block;一样的效果。然后查了一下知道了。

    如果内联元素定位属性设置为:absolate,元素脱离文档,即使a元素中没有内容,设置的背景依然会显示!