java中怎样上传zip_java服务器如何对zip文件分包上传?
展开全部
这个你是用什么客户端上传呢?
java写的客户端和H5页面都可以做这636f707962616964757a686964616f31333366306464个操作,思路都是一样的。
把文件切割再上传,后台接受结束后再把文件合并。
在DB里做个记录就是断点续传了嘛。
给点代码提示:
js:
每次上传2M,必须是支持H5的浏览器才行,兼容的问题需要注意!function calculate(file,callBack){
var fileReader = new FileReader(),
blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,
chunkSize = 2097152,
// read in chunks of 2MB
chunks = Math.ceil(file.size / chunkSize),
currentChunk = 0,
spark = new SparkMD5();
fileReader.onload = function(e) {
spark.appendBinary(e.target.result); // append binary string
currentChunk++;
if (currentChunk
loadNext();
}
else {
callBack(spark.end());
}
};
function loadNext() {
var start = currentChunk * chunkSize,
end = start + chunkSize >= file.size ? file.size : start + chunkSize;
fileReader.readAsBinaryString(blobSlice.call(file, start, end));
};
loadNext();
}
java代码没什么注释,也不是全部的代码看个大概意思,理解一下吧
根据文件的MD5码来判断每次上传的文件是不是上传过的。
如果是就找到上次的点告诉前台从哪开始上传。Message message = new Message();
PrintWriter out = response.getWriter();
ServiceBreakpointUpload service = new ServiceBreakpointUpload();
BreakpointShard shard = new BreakpointShard();
String currentShardIndex = "";
String totalShard = "";
String fileMD5 = "";
String fileName = "";
String fileType = "other";
try {
fileMD5 = request.getParameter("fileMD5");
Part part = request.getPart("fileData");
currentShardIndex = request.getParameter("currentShardIndex");
totalShard = request.getParameter("totalShard");
fileName = request.getParameter("fileName");
fileName = new String(fileName.getBytes("iso-8859-1"),"UTF-8");
fileType = request.getParameter("fileType");
String typeFolderName = service.getTypeFolder(fileType);
String folderPath = getServletContext().getRealPath("/upload/") + typeFolderName + File.separator;
String path = folderPath + fileName + "-" + fileMD5 + "-" + currentShardIndex;
System.out.println("fileName:"+fileName);
// 是否初次上传
if (!service.isUpload(fileMD5,fileType)) {
BreakpointFile breakpointFile = new BreakpointFile();
breakpointFile.setMd5(fileMD5);
breakpointFile.setFile_name(fileName);
breakpointFile.setTotal_shard(totalShard);
breakpointFile.setCurrent_shard_index(currentShardIndex);
breakpointFile.setFile_type(fileType);
breakpointFile.setPath(folderPath);
service.saveFile(breakpointFile);
} else {// 返回上次完成位置
service.updateFile(fileMD5, currentShardIndex,fileType);
System.out.println("upload shard "+currentShardIndex+" OK");
}
shard.setMd5(fileMD5);
shard.setShard_index(currentShardIndex);
shard.setPath(path);
service.saveShardFile(shard);
part.write(path);
if (currentShardIndex.equals(totalShard)) {// 上传完成
System.out.println("upload File finsh start merge shard");
service.mergeFiles(fileMD5,fileType);
System.out.println("merge shard OK");
message.setData("completed");
}
message.setData(currentShardIndex);
out.println(JSONObject.fromObject(message).toString());
} catch (Exception e) {
e.printStackTrace();
message.setHasError(true);
message.setErrorMessage("错误!");
out.println(JSONObject.fromObject(message).toString());
}
}
java中怎样上传zip_java服务器如何对zip文件分包上传?相关推荐
- 怎么把前端文件传到服务器,前端怎么把文件上传到服务器
前端怎么把文件上传到服务器 内容精选 换一换 本教程旨在演示使用GDS(General Data Service)工具将远端服务器上的数据导入GaussDB(DWS)中的办法,帮助您学习如何通过GDS ...
- java怎么给文本框加滚动条_懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急!...
懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急! 关注:147 答案:2 信息版本:手机版 电脑版 解决时间 2021-01-13 13:01 提问者当我没来过 2 ...
- 大文件分片上传前端框架_js实现大文件分片上传的方法
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- 拖拽文件夹上传 一(基于Vue的文件夹上传组件)
前言 首先说一下,小弟第一次写文章,如果有什么错误 还望小哥哥 小姐姐多多包涵.如果有什么缺陷还望大家指出来 让小弟多学习. 内容划分 上传文件夹一共分两部分来写 一方面怕太长了 大家看五分钟就不想看 ...
- Java中怎么把文本追加到已经存在的文件
Java中怎么把文本追加到已经存在的文件 我需要重复把文本追加到现有文件中.我应该怎么办? 回答一 你是想实现日志的目的吗?如果是的话,这里有几个库可供选择,最热门的两个就是Log4j 和 Logba ...
- vue获取上传进度_vue,webuploader实现文件分片上传,并显示上传进度
1.效果图 2.上传文件时,如果使用普通上传,则需要上传一个文件完成后才能上传下一个文件,如果文件很大时,可能会造成浏览器无响应,如果采用分片上传方式,将一个大文件分割成多块,并发上传,极大地提高大文 ...
- Node.js中使用adm-zip npm模块创建和提取zip文件
Zip文件是常用的压缩文件格式.大多数开发人员最终使用tarball而不是zip文件.但在某些情况下,您需要使用zip文件,例如将函数上载到AWS Lambda.在本文中,我将演示如何用 adm-zi ...
- 关于代码中生成HSSFWorkbook对象,转换成输入流,上传到服务器.下载的xls文件打开报错问题
今天在做项目开发是遇到一个问题,就是在java代码中创建HSSFWorkbook表格写入数据后,不直接返回给前端下载,而是上传到服务器: 开始直接通过 InputStream is = new Byt ...
- java中的相对路径和绝对路径,获取一个文本上每个字符出现的次数
相对路径:本文件同级下的文件,直接写文件名字,就是相对路径例如zzz.txt:,同级目录里有zzz.txt,直接写zzz.txt就是相对路径 绝对路径:文件在硬盘中真正存放的位置,例如 D:\Java ...
- vue上传zip文件到服务器,vue.js zip文件上传
vue.js zip文件上传 内容精选 换一换 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助.接口参考文档详细介绍了每个接口的参数和使用方法.在O ...
最新文章
- linux怎么开ssh端口,如何查看linux中的ssh端口开启状态
- java中去掉Sprit(arg0)中正则表达式干扰
- android端与windows端通信中文乱码问题
- OpenSTA -- 开源测试工具软件
- Hive自定义函数入门实例
- ABP官方文档翻译 5.1 Web API控制器
- RHCE课程-RH253Linux服务器架设笔记五-APACHE服务器配置(2)
- 数据分类分级指南分级方法
- 微信公众号 菜单 { “errcode“ 47001, “errmsg“ “data format error rid 61b36b ...“}
- Javescript REVIEW
- 六,文件操作(编码,读写文件,with方法)
- Layer Norm
- radix在Character.MIN_RADIX与Character.MAX_RADIX之间
- PPT使用的一些技巧总结
- MySQL子查询的优缺点_浅谈mysql的子查询
- c语言软件中ovr怎么取消,OVR Toolkit
- Tableau图表 • 蝴蝶图
- HTTP method中, PUT和PATCH两者有何区别, 大致如何用 ?
- ubuntu 编译zbar
- Phoenix客户端Squirrel安装
热门文章
- JQuery,ajax,jsonp 跨域访问
- iOS不再美好 安卓收入逼近千万
- 反转链表详解(Python)
- 对lua 实现面向对象的理解
- java中JFrame.setSize,Java JFrame .setSize(x, y) not working?
- Android真机调试时LogCat不显示日志信息
- 微信浪漫告白小程序java_厉害了,微信小程序可以这样表白,还怕他(她)拒绝你?...
- Java使用冒泡排序对数据进行排序,带注释
- mysql建立索引_MySQL 索引及优化实战(一)
- 源码时代html考试题,源码时代老师详解Web前端开发的三要素