将多张图片打包成zip包,一起上传
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包,一起上传的更多相关文章
- 用JAVA把内存里的二进制文件打包成ZIP包
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.ut ...
- [Java] Java 打包成jar包 和 解压jar包
解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...
- java批量下载,将多文件打包成zip格式下载
现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...
- spring-boot 打包成 war包发布
1.用maven打包成war包 2.将war包用zip方式打开,删除里面的tomcat-embed相关的4个包,删除spring-boot-tomcat包 3.将删除了tomcat相关嵌入包后的war ...
- [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
(1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2.右键点击项目,Bulid Path->Configure Build Path3.在设置Libraie ...
- 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html 接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...
- springboot中使用freemarker生成word文档并打包成zip下载(简历)
一.设计出的简历模板图以及给的简历小图标切图 二.按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件: 三.直 ...
- Ubuntu下将现有的文件打包成deb包
转自:http://www.linuxidc.com/Linux/2008-04/12297.htm deb是Debian Linux的软件包格式.一般来说是需要通过编译源码然后制作deb包,今天由于 ...
- 【Android端】代码打包成jar包/aar形式
Android端代码打包成jar包和aar形式: 首先,jar包的形式和aar形式有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/d ...
随机推荐
- 【Shell】单行注释和多行注释
单行注释 '# ' # echo "hello" 多行注释 方法1 : << ! 这是注释1 这是注释2 这是注释3 ! 方法2 :' 这是注释1 这是注释2 这是注释 ...
- LIMIT用法
select * from employees order by hire_date DESC LIMIT 0,3; 直接给语句说明:根据hire_date 降序排列,LIMIT 第一个参数表示从第几 ...
- JS-斜杠和反斜杠的转换
例子:var url = "http://localhost:64177/Home/AccordionIndex"; 将斜杠转换成反斜杠: url = url .replace(& ...
- docker学习笔记(3)
docker 搭建私有仓库 docker-registry是官方提供的工具,可以用于构建私有的镜像仓库.本文内容基于 docker-registry v2.x 版本. 安装运行 docker-regi ...
- 运维脚本while语法
循环的意思就是让程序重复地执行某些语句; whiler循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环; while循环语句的运行过程 使用while循环语句时,可以根据特 ...
- WebStorm 安装及使用
WebStrom 插件安装 File(文件) -> settings(设置) -> Plugins 即可调出设置中的插件选项. 或者 按 快捷键ctrl + alt + s也可调出设置菜单 ...
- 201771010141 周强 面向对象程序设计(Java)第12周作业
实验十二 图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的AP ...
- vuex核心
最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...
- Linux环境下安装nginx
#一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩cd /usr/local/devmkdir nginxcd nginxmkdir softcd soft # ...
- wps 邮件 通讯小灵通 长沙杭州
记得在天涯上看过一个热贴,关于贵族与世家的,文中提到号称当今贵族的六大世家,什么“汝南周氏”.“吴兴沈氏”之类,更有甚者,为了比拼,追本溯源,把孔子他老人家也抬了出来,号称孔夫子的多少多少代传人,当时 ...