1、前端页面

<div class="mod-body" id="showRW" style="text-align: center;font-size: 14px;letter-spacing: 1px;line-height: 24px;padding-bottom: 10px;height:400px;background:#FFFFFF !important;padding-top:140px;">
<table style="width: 100%;background:#FFFFFF !important;">
<tr>
<td style="text-align: center;">
<span>选择类型:</span>
<select name="photoType" id="photoType" style="width:200px;"> </select>
</td>
</tr>
<tr>
<td style="text-align: center;">
<span>选择文件:</span>
<input type="file" style="width:200px;padding: 0 0px !important;" name="importImg" id="importImg">
</td>
</tr>
<tr style="text-align: center;">
<td >
<input id="submitBtn" type="button" class="button" value="提交" style="width:130px;background: #263552;color: #FFF;border: 0px;border-radius: 2px;height: 28px;"/>
</td>
</tr>
<tr style="text-align: center;">
<td >
<div style="display: inline-block;width: 50%;line-height: 30px;text-align: left;padding-left: 550px;">
<span style="color:red;">注意:</span><br>
<span>1、仅支持图片打包成ZIP包,不能直接将文件夹打压缩包</span><br/>
<span>2、上传的每张图片大小须在100K以内</span>
</div> </td>
</tr>
</table>
</div>

  2、js代码

//提交
$("#submitBtn").click(function(){ var photoTypeSelect = $("#photoType").val();
if(photoTypeSelect == -1){
alert("请选择照片墙类型");
return false;
} var importFile = $("#importImg")[0].files[0];
if($("#importImg").val() == ''){
alert("请选择文件!");
return false;
}else{
var fileNameIndex = importFile.name.lastIndexOf(".");
var fileName = importFile.name.substring(fileNameIndex,importFile.name.length);
if((fileName.toLowerCase() != ".zip" )){
alert("文件必须为.zip类型");
window.location.href='#';
return false;
}
}
$("#mask").show();
$("#shDiv1").show();
var formData = new FormData();
formData.append("importFile", importFile);
formData.append("photoTypeSelect", photoTypeSelect);
formData.append("conId",conId);
$.ajax({
url:"<%=basePath%>/Conferences/photoWallAction.do?method=importPhotoWall",
type:"post",
dataType:"json",
data: formData,
dataType:"json",
// 告诉jQuery不要去处理发送的数据
processData: false,
// 告诉jQuery不要去设置Content-Type请求头
contentType: false,
async:false,
success:function(json){
$("#mask").hide();
$("#shDiv1").hide();
if(json.state == 1){
if(confirm('导入成功!')){
window.location.reload();
}
}else{
if(confirm('导入失败!')){
window.location.reload();
}
}
},
error:function(){
if(confirm('导入失败!')){
window.location.reload();
}
}
}) })

  3、后台数据处理

@RequestMapping(params = "method=importPhotoWall",method = RequestMethod.POST)
public void importPhotoWall(Integer conId,Integer photoTypeSelect,HttpServletRequest request,HttpServletResponse response,ModelMap model){
try {
JSONObject result = new JSONObject();
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
MultipartFile mFile = mRequest.getFile("importFile");
String theUrl = request.getScheme()+"://"+request.getServerName()+request.getContextPath()+"/";
String fileUrl = request.getSession().getServletContext().getRealPath("files");
try {
File file11 = new File(fileUrl+"/photoWallZip");
if(!file11.exists()){
file11.mkdirs();
}
File file = new File(fileUrl+"/photoWallZip","zip"+conId+".zip");
mFile.transferTo(file); //解压到目的文件夹
File file1 = new File(fileUrl+"/photoWall/"+conId+"/");
if(!file1.exists()){
file1.mkdirs();
} if(file != null){// 压缩文件夹存在
ZipFile zf = new ZipFile(fileUrl+"/photoWallZip/zip"+conId+".zip",Charset.forName("GBK"));
Enumeration<?> entries = zf.entries();
while(entries.hasMoreElements()){
byte[] bytes = new byte[2048];
int count = -1;
ZipEntry entry = (ZipEntry)entries.nextElement();
String fileName = entry.getName();
String saveUrl = "";
if(entry.isDirectory()){ }else{
fileName = new Date().getTime()+fileName.substring(fileName.lastIndexOf("."), fileName.length());
saveUrl = fileUrl+"/photoWall/"+conId+"/"+fileName;
File file2 = new File(saveUrl);
file2.createNewFile(); //创建文件
InputStream is = zf.getInputStream(entry);
FileOutputStream fos = new FileOutputStream(file2);
BufferedOutputStream bos = new BufferedOutputStream(fos, 2048);
while((count = is.read(bytes)) > -1)
{
bos.write(bytes, 0, count);
}
bos.flush();
bos.close();
fos.close();
is.close();
}
List<PhotoWall> phoList = photoWallService.getPhotpWallByConIdAndTypeasc(conId, photoTypeSelect);
PhotoWall photoWall = new PhotoWall();
photoWall.setConferencesId(conId);
photoWall.setCreateTime(new Date());
if(phoList != null && phoList.size() > 0){
if(phoList.get(0) != null && phoList.get(0).getLastDoTime() != null){
photoWall.setLastDoTime(new Date(phoList.get(0).getLastDoTime().getTime()+60000));
}else{
photoWall.setLastDoTime(new Date());
}
}else{
photoWall.setLastDoTime(new Date());
}
photoWall.setCreateUserId(-1);
photoWall.setCreateUserType(-1);
photoWall.setImageUrl(theUrl+"files/photoWall/"+conId+"/"+fileName);
photoWall.setLaudCount(0);
photoWall.setState(2);
photoWall.setTypeId(photoTypeSelect);
photoWallService.saveOrUpdateObject(photoWall);
}
zf.close();
if(!file.exists()){
System.out.println("删除文件失败,文件不存在");
}else{
if (file.isFile())
if(!file.delete()){//判断是否删除完毕
System.gc();//系统进行资源强制回收
file.delete();
}
System.out.println("删除成功");
}
}
} catch (Exception e) {
result.accumulate("state", 0);
e.printStackTrace();
}
result.accumulate("state", 1);
writeToJson(response, result.toString());
} catch (Exception e) {
e.printStackTrace();
}
}

  

将多张图片打包成zip包,一起上传的更多相关文章

  1. 用JAVA把内存里的二进制文件打包成ZIP包

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.ut ...

  2. [Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

  3. java批量下载,将多文件打包成zip格式下载

    现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...

  4. spring-boot 打包成 war包发布

    1.用maven打包成war包 2.将war包用zip方式打开,删除里面的tomcat-embed相关的4个包,删除spring-boot-tomcat包 3.将删除了tomcat相关嵌入包后的war ...

  5. [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目

    (1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2.右键点击项目,Bulid Path->Configure Build Path3.在设置Libraie ...

  6. 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)

    转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html   接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...

  7. springboot中使用freemarker生成word文档并打包成zip下载(简历)

    一.设计出的简历模板图以及给的简历小图标切图         二.按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件:    三.直 ...

  8. Ubuntu下将现有的文件打包成deb包

    转自:http://www.linuxidc.com/Linux/2008-04/12297.htm deb是Debian Linux的软件包格式.一般来说是需要通过编译源码然后制作deb包,今天由于 ...

  9. 【Android端】代码打包成jar包/aar形式

    Android端代码打包成jar包和aar形式: 首先,jar包的形式和aar形式有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/d ...

随机推荐

  1. jsp页面传中文到后台乱码怎么办?

    一般从前台传值到后腰如果传的值是中文的话,又不用post传值方式,到后台显示会显示成乱码的形式.所以以下方法亲测有效防止乱码. 前台jsp页面: var taskTitle = $('#taskTit ...

  2. Python基础(条件判断,循环,占位符等)

    Python 自动化 系统开发用的语言和自动化脚本可以不同 学习peython可用于: 网路爬虫,数据分,web开发,人工智能,自动化运维,自动化测试,嵌入式,黑客 第三方库比较全 脚本语言:功能单一 ...

  3. adaboost 参数选择

    先看下ababoost和决策树效果对比 import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection ...

  4. Vue对Html标签应用条件渲染

    我的需求 在flag属性为true时 渲染标签的html为 <input :data-val-required="不能为空"/> 在flag属性为false时 渲染标签 ...

  5. 动态导入Js文件

    var ScriptLoader = { worker: , isWait: false, readyQueue: [], callback: [], timer: null, wait: funct ...

  6. MNIST机器学习入门

    "python: 3.5" # -*- coding: utf-8 -*-"""Created on Tue Oct 16 15:29:38 2018 ...

  7. elasticsearch(6) 映射和分析

    类似关系型数据库中每个字段都有对应的数据类型,例如nvarchar.int.date等等,elasticsearch也会将文档中的字段映射成对应的数据类型,这一映射可以使ES自动生成的,也是可以由我们 ...

  8. [Java concurrent][Collections]

    同步容器类 同步容器类包括Vector和Hashtable,二者是早期JDK的一部分.以及一些在JDK1.2中添加的可以由Collections.synchronizedXxx等工厂方法创建的. 这些 ...

  9. zookeeper分布式服务中选主的应用

    通常zookeeper在分布式服务中作为注册中心,实际上它还可以办到很多事.比如分布式队列.分布式锁 由于公司服务中有很多定时任务,而这些定时任务由于一些历史原因暂时不能改造成框架调用 于是想到用zo ...

  10. 2017-9-24模拟赛T1 个人卫生综合征(school.*)

    题目 每天 BBS 都要从家里经过城市中的一段路到学校刷五三.城市中一共有 n 个路口和 m 条双向道路,每条双向道路都连接着两个路口 a i .b i 且有一定的时间花费 v i .BBS家编号为 ...