List<PartEtag> partEtags = Collections.synchronizedList(new ArrayList<PartEtag>());
//初始化
@PostMapping("/getuploadId")
@ApiOperation(value = "获取uploadid", notes = "获取uploadid")
public String multipart(HttpServletRequest request) {
String fileName=request.getParameter("fileName");
String resourceId=UUID.randomUUID().toString().replaceAll("-","");
String objectName=resourceId+fileName;
JSONObject jsonObject=new JSONObject();
ObsClient obsClient=new ObsClient(ak,sk,endPoint);
InitiateMultipartUploadRequest request1 = new InitiateMultipartUploadRequest(g_bucketName, objectName);
InitiateMultipartUploadResult result = obsClient.initiateMultipartUpload(request1);
String uploadId = result.getUploadId();
jsonObject.put("objectName",objectName);
jsonObject.put("uploadId",uploadId);
return uploadId;
}
@PostMapping("/multipartupload")
@ApiOperation(value = "分段上传接口", notes = "分段上传接口")
public int multipartupload(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
ObsClient obsClient=new ObsClient(ak,sk,endPoint);
JSONObject jsonObject=new JSONObject();
EsdkObs2Controller esdkObs2Controller=new EsdkObs2Controller();
String uploadId=request.getParameter("uploadId");
String objectName=request.getParameter("objectName");
String total= request.getParameter("total");
MultipartFile multipartFile=file;
String sortNumber=request.getParameter("sortNumber");
//上传
PartEtag partEtag=esdkObs2Controller.partUpload(g_bucketName,objectName,uploadId,Integer.parseInt(sortNumber),multipartFile);
partEtags.add(partEtag);
//如果上传的总段数等于段号时候合并
if(total == sortNumber){
//分片合并
esdkObs2Controller.combine(g_bucketName,objectName,uploadId,partEtags);
}
return 1;
}
/**
* @Title: 分段上传
*/
public PartEtag partUpload(String bucketName,String objectName,String uploadId,int sortNumber,MultipartFile file){
ObsClient obsClient=new ObsClient(ak,sk,endPoint);
PartEtag partEtag=null;
try{
UploadPartRequest request=new UploadPartRequest(bucketName,objectName);
request.setUploadId(uploadId);
request.setPartNumber(sortNumber);
request.setInput(file.getInputStream());
UploadPartResult result=obsClient.uploadPart(request);
partEtag= new PartEtag(result.getEtag(),result.getPartNumber());
}catch (Exception e){
System.out.print("--------");
}
return partEtag;
}
/**
* @Title: 分段合并
*/
public boolean combine(String bucketName,String objectName,String uploadId,List<PartEtag> partList){
ObsClient obsClient=new ObsClient(ak,sk,endPoint);
try{
CompleteMultipartUploadRequest request= new CompleteMultipartUploadRequest(bucketName,objectName,uploadId,partList);
CompleteMultipartUploadResult result=obsClient.completeMultipartUpload(request);
String url=result.getObjectUrl();
}catch (Exception e){
System.out.print("--------");
}
return true;
}