当前位置:首页 » 编程语言 » java分包

java分包

发布时间: 2023-09-01 16:13:22

1. java服务器如何对zip文件分包上传

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

java写的客户端和H5页面都可以做这个操作,思路都是一样的。

把文件切割再上传,后台接受结束后再把文件合并。

在DB里做个记录就是断点续传了嘛。

给点代码提示:

js:

每次上传2M,必须是支持H5的浏览器才行,兼容的问题需要注意!

functioncalculate(file,callBack){

varfileReader=newFileReader(),
blobSlice=File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice,
chunkSize=2097152,
//readinchunksof2MB
chunks=Math.ceil(file.size/chunkSize),
currentChunk=0,
spark=newSparkMD5();

fileReader.onload=function(e){
spark.appendBinary(e.target.result);//appendbinarystring
currentChunk++;

if(currentChunk<chunks){
loadNext();
}
else{
callBack(spark.end());
}
};

functionloadNext(){
varstart=currentChunk*chunkSize,
end=start+chunkSize>=file.size?file.size:start+chunkSize;

fileReader.readAsBinaryString(blobSlice.call(file,start,end));
};

loadNext();
}

java代码没什么注释,也不是全部的代码看个大概意思,理解一下吧

根据文件的MD5码来判断每次上传的文件是不是上传过的。

如果是就找到上次的点告诉前台从哪开始上传。

Messagemessage=newMessage();
PrintWriterout=response.getWriter();
=newServiceBreakpointUpload();
BreakpointShardshard=newBreakpointShard();

StringcurrentShardIndex="";
StringtotalShard="";
StringfileMD5="";
StringfileName="";
StringfileType="other";
try{
fileMD5=request.getParameter("fileMD5");
Partpart=request.getPart("fileData");
currentShardIndex=request.getParameter("currentShardIndex");
totalShard=request.getParameter("totalShard");
fileName=request.getParameter("fileName");
fileName=newString(fileName.getBytes("iso-8859-1"),"UTF-8");
fileType=request.getParameter("fileType");
StringtypeFolderName=service.getTypeFolder(fileType);
StringfolderPath=getServletContext().getRealPath("/upload/")+typeFolderName+File.separator;
Stringpath=folderPath+fileName+"-"+fileMD5+"-"+currentShardIndex;
System.out.println("fileName:"+fileName);
//是否初次上传
if(!service.isUpload(fileMD5,fileType)){
BreakpointFilebreakpointFile=newBreakpointFile();
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("uploadshard"+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("");
service.mergeFiles(fileMD5,fileType);
System.out.println("mergeshardOK");
message.setData("completed");
}
message.setData(currentShardIndex);
out.println(JSONObject.fromObject(message).toString());
}catch(Exceptione){
e.printStackTrace();
message.setHasError(true);
message.setErrorMessage("错误!");
out.println(JSONObject.fromObject(message).toString());
}
}

2. Java工程搭建的时候,分包是模块优先,还是分层优先

com.项目名.模块.

这样每个模块可以单独维护

热点内容
红警咋解压 发布:2025-08-21 22:42:58 浏览:887
负73的源码 发布:2025-08-21 22:31:51 浏览:675
安卓tabs是干什么的 发布:2025-08-21 22:27:52 浏览:164
算法可能解 发布:2025-08-21 22:27:33 浏览:691
用一台电脑作为共享服务器 发布:2025-08-21 22:25:34 浏览:661
触动精灵脚本过期 发布:2025-08-21 22:10:34 浏览:891
无法访问iis 发布:2025-08-21 22:04:05 浏览:262
win7asp服务器搭建 发布:2025-08-21 22:02:13 浏览:594
手机端编写脚本 发布:2025-08-21 21:46:54 浏览:565
九游如何看帐号与密码 发布:2025-08-21 21:42:32 浏览:4