将多张图片打包成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 ...
随机推荐
- (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- Jsの练习-数组常用方法 -forEach()
forEach() : 对数组进行遍历循环,对数组中的每一项运行给定函数. 格式: arr.forEach(function(value,index){}) <!DOCTYPE html> ...
- Problem A: 重载字符的加减法
Description 定义一个字符类Character,只有一个char类型的数据成员. 重载它的+.-.<<和>>运算符,其中+.-的第二个操作数是int类型的整数n.“+ ...
- 吴恩达机器学习笔记5-Octave基本操作
1.逻辑运算 1==2 %false :注释用%,这句话意思是判断1是否等于2,false,输出0 1~=2 %true 1不等于2 为true,输出为1 1&&0 %and 1|| ...
- day 23 对象的名称空间 类,对象属性和方法 封装 接口提供
一.对象的特有名称空间 # 对象独有的名称空间:在产生对象时就赋初值 '''class ted: def func(): 当func里不存在参数时,调用时不需要给值 print('hah')ted.f ...
- EOJ Monthly 2019.2 题解(B、D、F)
EOJ Monthly 2019.2 题解(B.D.F) 官方题解:https://acm.ecnu.edu.cn/blog/entry/320/ B. 解题 单测试点时限: 2.0 秒 内存限制: ...
- jdk环境变量配置改变不生效的问题
在工作中两次遇到jdk配置上的这个问题:将环境变量中的jdk路径修改之后,使用-version查看,版本号还是之前的,也就是说修改未生效.甚至当我将Path变量中的jdk路径配置都删除了之后,使用-v ...
- shell编程规范
1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8 ...
- 基于Verilog的带FIFO输出缓冲的串口接收接口封装
一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见“基于Verilog的串口接收实验” rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能 ...
- HttpClient 通过代理访问验证服务器
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...