當前位置:首頁 » 編程語言 » 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-02-04 01:06:24 瀏覽:245
手機wps密碼怎麼取消密碼 發布:2025-02-04 00:51:44 瀏覽:593
演算法邏輯表 發布:2025-02-04 00:51:44 瀏覽:238
零售股票如何配置主線 發布:2025-02-04 00:51:07 瀏覽:945
預演算法施行時間是 發布:2025-02-04 00:50:30 瀏覽:339
世界ol上傳照片 發布:2025-02-04 00:34:13 瀏覽:61
有初始化的數組編譯提示重復定義 發布:2025-02-04 00:33:21 瀏覽:584
家裡電腦wifi密碼怎麼改 發布:2025-02-04 00:27:35 瀏覽:409
手機網頁緩存視頻 發布:2025-02-03 23:38:48 瀏覽:835
agnes演算法 發布:2025-02-03 23:38:05 瀏覽:38