展开全部

这个你是用什么客户端上传呢?

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文件分包上传?相关推荐

  1. 怎么把前端文件传到服务器,前端怎么把文件上传到服务器

    前端怎么把文件上传到服务器 内容精选 换一换 本教程旨在演示使用GDS(General Data Service)工具将远端服务器上的数据导入GaussDB(DWS)中的办法,帮助您学习如何通过GDS ...

  2. java怎么给文本框加滚动条_懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急!...

    懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急! 关注:147  答案:2  信息版本:手机版 电脑版 解决时间 2021-01-13 13:01 提问者当我没来过 2 ...

  3. 大文件分片上传前端框架_js实现大文件分片上传的方法

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

  4. 拖拽文件夹上传 一(基于Vue的文件夹上传组件)

    前言 首先说一下,小弟第一次写文章,如果有什么错误 还望小哥哥 小姐姐多多包涵.如果有什么缺陷还望大家指出来 让小弟多学习. 内容划分 上传文件夹一共分两部分来写 一方面怕太长了 大家看五分钟就不想看 ...

  5. Java中怎么把文本追加到已经存在的文件

    Java中怎么把文本追加到已经存在的文件 我需要重复把文本追加到现有文件中.我应该怎么办? 回答一 你是想实现日志的目的吗?如果是的话,这里有几个库可供选择,最热门的两个就是Log4j 和 Logba ...

  6. vue获取上传进度_vue,webuploader实现文件分片上传,并显示上传进度

    1.效果图 2.上传文件时,如果使用普通上传,则需要上传一个文件完成后才能上传下一个文件,如果文件很大时,可能会造成浏览器无响应,如果采用分片上传方式,将一个大文件分割成多块,并发上传,极大地提高大文 ...

  7. Node.js中使用adm-zip npm模块创建和提取zip文件

    Zip文件是常用的压缩文件格式.大多数开发人员最终使用tarball而不是zip文件.但在某些情况下,您需要使用zip文件,例如将函数上载到AWS Lambda.在本文中,我将演示如何用 adm-zi ...

  8. 关于代码中生成HSSFWorkbook对象,转换成输入流,上传到服务器.下载的xls文件打开报错问题

    今天在做项目开发是遇到一个问题,就是在java代码中创建HSSFWorkbook表格写入数据后,不直接返回给前端下载,而是上传到服务器: 开始直接通过 InputStream is = new Byt ...

  9. java中的相对路径和绝对路径,获取一个文本上每个字符出现的次数

    相对路径:本文件同级下的文件,直接写文件名字,就是相对路径例如zzz.txt:,同级目录里有zzz.txt,直接写zzz.txt就是相对路径 绝对路径:文件在硬盘中真正存放的位置,例如 D:\Java ...

  10. vue上传zip文件到服务器,vue.js zip文件上传

    vue.js zip文件上传 内容精选 换一换 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助.接口参考文档详细介绍了每个接口的参数和使用方法.在O ...

最新文章

  1. linux怎么开ssh端口,如何查看linux中的ssh端口开启状态
  2. java中去掉Sprit(arg0)中正则表达式干扰
  3. android端与windows端通信中文乱码问题
  4. OpenSTA -- 开源测试工具软件
  5. Hive自定义函数入门实例
  6. ABP官方文档翻译 5.1 Web API控制器
  7. RHCE课程-RH253Linux服务器架设笔记五-APACHE服务器配置(2)
  8. 数据分类分级指南分级方法
  9. 微信公众号 菜单 { “errcode“ 47001, “errmsg“ “data format error rid 61b36b ...“}
  10. Javescript REVIEW
  11. 六,文件操作(编码,读写文件,with方法)
  12. Layer Norm
  13. radix在Character.MIN_RADIX与Character.MAX_RADIX之间
  14. PPT使用的一些技巧总结
  15. MySQL子查询的优缺点_浅谈mysql的子查询
  16. c语言软件中ovr怎么取消,OVR Toolkit
  17. Tableau图表 • 蝴蝶图
  18. HTTP method中, PUT和PATCH两者有何区别, 大致如何用 ?
  19. ubuntu 编译zbar
  20. Phoenix客户端Squirrel安装

热门文章

  1. JQuery,ajax,jsonp 跨域访问
  2. iOS不再美好 安卓收入逼近千万
  3. 反转链表详解(Python)
  4. 对lua 实现面向对象的理解
  5. java中JFrame.setSize,Java JFrame .setSize(x, y) not working?
  6. Android真机调试时LogCat不显示日志信息
  7. 微信浪漫告白小程序java_厉害了,微信小程序可以这样表白,还怕他(她)拒绝你?...
  8. Java使用冒泡排序对数据进行排序,带注释
  9. mysql建立索引_MySQL 索引及优化实战(一)
  10. 源码时代html考试题,源码时代老师详解Web前端开发的三要素