當前位置:首頁 » 編程語言 » 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-03-13 17:18:37 瀏覽:606
wifi密碼怎麼顯示密碼錯誤 發布:2025-03-13 17:02:21 瀏覽:315
怎麼清理手機微信存儲空間 發布:2025-03-13 16:52:08 瀏覽:798
教學直播源碼 發布:2025-03-13 16:52:06 瀏覽:445
代碼是否能進行編譯 發布:2025-03-13 16:48:12 瀏覽:858
sql2005安裝組件 發布:2025-03-13 16:33:54 瀏覽:231
JavastreamList 發布:2025-03-13 16:32:57 瀏覽:125
多sql 發布:2025-03-13 16:09:04 瀏覽:240
按鍵精靈導入腳本失靈 發布:2025-03-13 15:59:15 瀏覽:548
看雪加密與解密 發布:2025-03-13 15:37:56 瀏覽:549