需求描述:

前段时间写了一篇博客《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. Linux下Samba的安装和使用

    一. samba的安装: sudo apt-get insall samba sudo apt-get install smbfs 二. 创建共享目录: mkdir /home/phinecos/sh ...

  2. checkbox、radio控件和文字不对齐

    一般使用html控件的时候  单选按钮和复选框的控件和文字不对齐 给input控件加上   style="vertical-align: middle; margin-top: -2px; ...

  3. 一些matlab命令

    expand: R = exprnd(MU) returns an array of random numbers chosen from the exponential distribution w ...

  4. 淘宝API对接实例

    以为公司祖传代码太多使用的PHP5.4.45版本,所以无法使用SDK包,只能原生自己写,踩了不少坑. 1.授权 https://oauth.taobao.com/authorize?response_ ...

  5. SQL Server数据库中的系统数据库?

    SQL Server的系统数据库分为:master,model,msdb和tempdb 1.Master数据库 Master数据库记录SQL Server系统的所有系统级别信息(表sysobjects ...

  6. Mybatis SqlsessionFactory

    在Mybatis 与 Spring 进行整合的时候,我们会进行sqlSessionFactory 的配置,来创建sqlSessionFactory 对象:如下: <bean id="s ...

  7. C# Task.Run 和 Task.Factory.StartNew 区别

    Task.Run 是在 dotnet framework 4.5 之后才可以使用,但是 Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制.可以认 ...

  8. python中打印一个字符串中有多少个单词

    1.for实现: str1 = str.strip(input("please input a str:"))n = 1i = 0for i in range(len(str1)- ...

  9. JSON.parse()和eval()的区别

    json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢? JSON.parse()之可以解析json格式的数据,并且会对要解析 ...

  10. python爬虫-上期所持仓排名数据爬取

    摘要:笔记记录爬取上期所持仓数据的过程,本次爬取使用的工具是python,使用的IDE是pycharm 一.查看网页属性,分析数据结构 在浏览器中打开上期所网页,按F12或者选择表格文字-右键-审查元 ...