Compare commits
8 Commits
8e1ab13d59
...
7239f9007d
| Author | SHA1 | Date |
|---|---|---|
|
|
7239f9007d | |
|
|
80564cfcb8 | |
|
|
7dfc07fbf9 | |
|
|
77c58572f7 | |
|
|
b13c88946a | |
|
|
7a2b031d43 | |
|
|
63bb718b31 | |
|
|
e731095f0d |
|
|
@ -32,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
|
@ -42,7 +43,9 @@ import java.nio.file.Path;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
@ -66,6 +69,8 @@ public class FileController extends ControllerBase {
|
||||||
@Resource
|
@Resource
|
||||||
private IFileUploadRecordService fileUploadRecordService;
|
private IFileUploadRecordService fileUploadRecordService;
|
||||||
|
|
||||||
|
private static final Map<String,String> FILE_PATH_MAP=new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传单个文件
|
* 上传单个文件
|
||||||
* @param file 要上传的文件
|
* @param file 要上传的文件
|
||||||
|
|
@ -229,4 +234,56 @@ public class FileController extends ControllerBase {
|
||||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||||
.body(zipContent);
|
.body(zipContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化分片上传
|
||||||
|
* @param fileName 文件名
|
||||||
|
* @return uploadId
|
||||||
|
*/
|
||||||
|
@GetMapping("/multipart/init")
|
||||||
|
public ApiResult<String> initMultipartUpload(@Valid @RequestParam @NotBlank String fileName) {
|
||||||
|
String filePath=buildFilePath(getFileType(fileName));
|
||||||
|
String uploadId=fileUploadService.initMultipartUpload(filePath);
|
||||||
|
FILE_PATH_MAP.put(uploadId,filePath);
|
||||||
|
return ApiResult.success(uploadId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传分片
|
||||||
|
* @param file 要上传的分片文件,名称为file
|
||||||
|
* @param uploadId 上传id
|
||||||
|
* @param chunkNumber 分片编号
|
||||||
|
*/
|
||||||
|
@PostMapping("/multipart/uploadChunk")
|
||||||
|
public ApiResult<Void> uploadChunk(@Valid @RequestParam("file") @NotNull MultipartFile file
|
||||||
|
,@Valid @RequestParam @NotBlank String uploadId
|
||||||
|
,@Valid @RequestParam @NotNull Integer chunkNumber) throws IOException {
|
||||||
|
String filePath = FILE_PATH_MAP.get(uploadId);
|
||||||
|
VUtils.trueThrowBusinessError(StrUtil.isBlank(filePath)).throwMessage("文件不存在");
|
||||||
|
fileUploadService.uploadChunk(file,filePath, uploadId, chunkNumber);
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成分片上传
|
||||||
|
* @param uploadId 上传id
|
||||||
|
* @return 文件url
|
||||||
|
*/
|
||||||
|
@PostMapping("/multipart/complete")
|
||||||
|
public ApiResult<String> completeMultipartUpload(@Valid @RequestParam @NotBlank String uploadId) {
|
||||||
|
String filePath = FILE_PATH_MAP.get(uploadId);
|
||||||
|
VUtils.trueThrowBusinessError(StrUtil.isBlank(filePath)).throwMessage("文件不存在");
|
||||||
|
return ApiResult.success(fileUploadService.completeMultipartUpload(filePath, uploadId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消分片上传
|
||||||
|
* @param uploadId 上传id
|
||||||
|
*/
|
||||||
|
@PostMapping("/multipart/abort")
|
||||||
|
public void abortMultipartUpload(@Valid @RequestParam @NotBlank String uploadId) {
|
||||||
|
String filePath = FILE_PATH_MAP.get(uploadId);
|
||||||
|
VUtils.trueThrowBusinessError(StrUtil.isBlank(filePath)).throwMessage("文件不存在");
|
||||||
|
fileUploadService.abortMultipartUpload(filePath, uploadId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -680,13 +680,20 @@ public class ProductModelController extends ControllerBase{
|
||||||
.setModelParamsId(finalResultId)
|
.setModelParamsId(finalResultId)
|
||||||
.setLanguageCode(language.getCode())
|
.setLanguageCode(language.getCode())
|
||||||
.setBatchNumber(batchNumber)
|
.setBatchNumber(batchNumber)
|
||||||
.setIndexName(translate.translateWord(dto.getIndexName(),language.getTranslateCode()))
|
|
||||||
.setName(translate.translateWord(dto.getName(),language.getTranslateCode()))
|
|
||||||
.setValue(translate.translateWord(dto.getValue(),language.getTranslateCode()))
|
|
||||||
.setMain(dto.getMain())
|
.setMain(dto.getMain())
|
||||||
.setCompare(dto.getCompare())
|
.setCompare(dto.getCompare())
|
||||||
.setCreateBy(AdminUserUtil.getUserName())
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
|
if (StrUtil.equals(language.getCode(), "sa") || StrUtil.equals(language.getCode(), "de")) {
|
||||||
|
ProductModelParamsItem en = items.stream().filter(it -> StrUtil.equals(it.getLanguageCode(), "us")).findFirst().get();
|
||||||
|
item.setIndexName(translate.translateWord(en.getIndexName(), language.getTranslateCode()));
|
||||||
|
item.setName(translate.translateWord(en.getName(), language.getTranslateCode()));
|
||||||
|
item.setValue(translate.translateWord(en.getValue(), language.getTranslateCode()));
|
||||||
|
} else {
|
||||||
|
item.setIndexName(translate.translateWord(dto.getIndexName(), language.getTranslateCode()));
|
||||||
|
item.setName(translate.translateWord(dto.getName(), language.getTranslateCode()));
|
||||||
|
item.setValue(translate.translateWord(dto.getValue(), language.getTranslateCode()));
|
||||||
|
}
|
||||||
items.add(item);
|
items.add(item);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -731,6 +738,16 @@ public class ProductModelController extends ControllerBase{
|
||||||
.setCompare(dto.getCompare())
|
.setCompare(dto.getCompare())
|
||||||
.setCreateBy(AdminUserUtil.getUserName())
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
|
if (StrUtil.equals(language.getCode(), "sa") || StrUtil.equals(language.getCode(), "de")) {
|
||||||
|
ProductModelParamsItem en = items.stream().filter(it -> StrUtil.equals(it.getLanguageCode(), "us")).findFirst().get();
|
||||||
|
item.setIndexName(translate.translateWord(en.getIndexName(), language.getTranslateCode()));
|
||||||
|
item.setName(translate.translateWord(en.getName(), language.getTranslateCode()));
|
||||||
|
item.setValue(translate.translateWord(en.getValue(), language.getTranslateCode()));
|
||||||
|
} else {
|
||||||
|
item.setIndexName(translate.translateWord(dto.getIndexName(), language.getTranslateCode()));
|
||||||
|
item.setName(translate.translateWord(dto.getName(), language.getTranslateCode()));
|
||||||
|
item.setValue(translate.translateWord(dto.getValue(), language.getTranslateCode()));
|
||||||
|
}
|
||||||
items.add(item);
|
items.add(item);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,8 +65,6 @@ public class AliYunTranslate implements ITranslate {
|
||||||
.setFormatType(formatType)
|
.setFormatType(formatType)
|
||||||
.setSourceText(text);
|
.setSourceText(text);
|
||||||
log.info("翻译,请求参数:{}", JSONUtil.toJsonStr(request));
|
log.info("翻译,请求参数:{}", JSONUtil.toJsonStr(request));
|
||||||
System.out.println("Key serializer: " + stringRedisTemplate.getKeySerializer());
|
|
||||||
System.out.println("Value serializer: " + stringRedisTemplate.getValueSerializer());
|
|
||||||
String key = "translate:" + SecureUtil.md5(text) + ":" + targetLanguage;
|
String key = "translate:" + SecureUtil.md5(text) + ":" + targetLanguage;
|
||||||
String result = stringRedisTemplate.opsForValue().get(key);
|
String result = stringRedisTemplate.opsForValue().get(key);
|
||||||
if (StrUtil.isNotBlank(result)) {
|
if (StrUtil.isNotBlank(result)) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Nacos 地址
|
||||||
|
nacos.server-addr=${NACOS_SERVER_ADDR:192.168.0.194:8848}
|
||||||
|
#nacos.server-addr=192.168.0.194:8848
|
||||||
|
#spring.cloud.nacos.discovery.username=nacos
|
||||||
|
#spring.cloud.nacos.discovery.password=ZLQ8vgmjoJ4?EPJ4]fs_
|
||||||
|
#spring.config.activate.on-profile=dev
|
||||||
|
logging.level.com.nflg=DEBUG
|
||||||
|
logging.level.com.alibaba.cloud.nacos.config=DEBUG
|
||||||
|
|
||||||
|
#spring.datasource.url=jdbc:mysql://112.74.186.154:13151/mobilebroken?useUnicode=true&characterEncoding=utf8mb4&tinyInt1isBit=false&useSSL=false&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=GMT%2B8
|
||||||
|
#spring.datasource.username=nflg
|
||||||
|
#spring.datasource.password=Aciga@2022
|
||||||
|
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
|
logging.config=classpath:logback-sit.xml
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
spring.application.name=admin
|
spring.application.name=admin
|
||||||
spring.profiles.active=dev
|
spring.profiles.active=dev
|
||||||
server.port=8082
|
server.port=8082
|
||||||
# 设置最大文件大小 (默认为1MB)
|
spring.servlet.multipart.enabled=true
|
||||||
spring.servlet.multipart.max-file-size=100MB
|
spring.servlet.multipart.max-file-size=1024MB
|
||||||
# 设置所有文件总大小 (默认为10MB)
|
spring.servlet.multipart.max-request-size=1024MB
|
||||||
spring.servlet.multipart.max-request-size=500MB
|
spring.servlet.multipart.file-size-threshold=10MB
|
||||||
|
spring.servlet.multipart.location=/tmp
|
||||||
#spring.config.import=classpath:application-${spring.profiles.active}.properties,nacos:
|
#spring.config.import=classpath:application-${spring.profiles.active}.properties,nacos:
|
||||||
#spring.config.import=nacos:
|
#spring.config.import=nacos:
|
||||||
logging.level.root=info
|
logging.level.root=info
|
||||||
|
|
|
||||||
|
|
@ -131,5 +131,8 @@ public class Constant {
|
||||||
public static final String DICTIONARY_PRODUCT_MODEL_MAIN_PARAMS ="ProductModelMainParams";
|
public static final String DICTIONARY_PRODUCT_MODEL_MAIN_PARAMS ="ProductModelMainParams";
|
||||||
|
|
||||||
public static final String DICTIONARY_PRODUCT_INTRO_CATEGORY ="ProductIntroCategory";
|
public static final String DICTIONARY_PRODUCT_INTRO_CATEGORY ="ProductIntroCategory";
|
||||||
|
|
||||||
public static final String DICTIONARY_PRODUCT_MODULE = "ProductModule";
|
public static final String DICTIONARY_PRODUCT_MODULE = "ProductModule";
|
||||||
|
|
||||||
|
public static final String TRACE_ID = "traceId";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ package com.nflg.mobilebroken.starter.advice;
|
||||||
|
|
||||||
import cn.dev33.satoken.exception.NotLoginException;
|
import cn.dev33.satoken.exception.NotLoginException;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.nflg.mobilebroken.common.constant.Constant;
|
||||||
import com.nflg.mobilebroken.common.constant.STATE;
|
import com.nflg.mobilebroken.common.constant.STATE;
|
||||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.slf4j.MDC;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.validation.FieldError;
|
import org.springframework.validation.FieldError;
|
||||||
|
|
@ -28,13 +30,13 @@ public class GlobalRestControllerAdvice {
|
||||||
@ExceptionHandler(SQLException.class)
|
@ExceptionHandler(SQLException.class)
|
||||||
public ApiResult<Void> handleSQLException(SQLException ex) {
|
public ApiResult<Void> handleSQLException(SQLException ex) {
|
||||||
log.error("数据库错误: ", ex);
|
log.error("数据库错误: ", ex);
|
||||||
return ApiResult.error(STATE.BusinessError,"数据库错误");
|
return ApiResult.error(STATE.BusinessError, "数据库错误,编号:" + MDC.get(Constant.TRACE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(Exception.class)
|
@ExceptionHandler(Exception.class)
|
||||||
public ApiResult<Void> handleAllExceptions(Exception ex) {
|
public ApiResult<Void> handleAllExceptions(Exception ex) {
|
||||||
log.error("服务器内部错误: ", ex);
|
log.error("服务器内部错误: ", ex);
|
||||||
return ApiResult.error(STATE.BusinessError,"服务器内部错误: " + ex.getMessage());
|
return ApiResult.error(STATE.BusinessError, "服务器内部错误,编号:" + MDC.get(Constant.TRACE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(NflgException.class)
|
@ExceptionHandler(NflgException.class)
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.nflg.mobilebroken.starter.filter;
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.nflg.mobilebroken.common.constant.Constant;
|
||||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
|
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
|
||||||
|
|
@ -29,7 +30,6 @@ import java.util.List;
|
||||||
public class TraceIdFilter extends OncePerRequestFilter {
|
public class TraceIdFilter extends OncePerRequestFilter {
|
||||||
|
|
||||||
private static final String TRACE_ID_HEADER = "X-Trace-Id";
|
private static final String TRACE_ID_HEADER = "X-Trace-Id";
|
||||||
private static final String MDC_TRACE_ID = "traceId";
|
|
||||||
|
|
||||||
// 需要跳过的二进制内容类型
|
// 需要跳过的二进制内容类型
|
||||||
private static final List<String> BINARY_CONTENT_TYPES = Arrays.asList("image", "video", "audio", "stream", "pdf", "zip", "excel");
|
private static final List<String> BINARY_CONTENT_TYPES = Arrays.asList("image", "video", "audio", "stream", "pdf", "zip", "excel");
|
||||||
|
|
@ -46,7 +46,7 @@ public class TraceIdFilter extends OncePerRequestFilter {
|
||||||
traceId = IdUtil.getSnowflakeNextIdStr();
|
traceId = IdUtil.getSnowflakeNextIdStr();
|
||||||
}
|
}
|
||||||
// 存入MDC和响应头
|
// 存入MDC和响应头
|
||||||
MDC.put(MDC_TRACE_ID, traceId);
|
MDC.put(Constant.TRACE_ID, traceId);
|
||||||
responseWrapper.addHeader(TRACE_ID_HEADER, traceId);
|
responseWrapper.addHeader(TRACE_ID_HEADER, traceId);
|
||||||
|
|
||||||
filterChain.doFilter(requestWrapper, responseWrapper);
|
filterChain.doFilter(requestWrapper, responseWrapper);
|
||||||
|
|
@ -56,7 +56,7 @@ public class TraceIdFilter extends OncePerRequestFilter {
|
||||||
responseWrapper.copyBodyToResponse();
|
responseWrapper.copyBodyToResponse();
|
||||||
|
|
||||||
// 请求结束时清除MDC
|
// 请求结束时清除MDC
|
||||||
MDC.remove(MDC_TRACE_ID);
|
MDC.remove(Constant.TRACE_ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,4 +24,12 @@ public interface FileUploadService {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
String upload(String filePath, InputStream stream) throws IOException;
|
String upload(String filePath, InputStream stream) throws IOException;
|
||||||
|
|
||||||
|
String initMultipartUpload(String filePath);
|
||||||
|
|
||||||
|
void uploadChunk(MultipartFile file,String filePath,String uploadId, int chunkNumber) throws IOException;
|
||||||
|
|
||||||
|
String completeMultipartUpload(String filePath,String uploadId);
|
||||||
|
|
||||||
|
void abortMultipartUpload(String filePath,String uploadId);
|
||||||
}
|
}
|
||||||
|
|
@ -2,8 +2,7 @@ package com.nflg.mobilebroken.starter.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.aliyun.oss.OSS;
|
import com.aliyun.oss.OSS;
|
||||||
import com.aliyun.oss.model.PutObjectRequest;
|
import com.aliyun.oss.model.*;
|
||||||
import com.aliyun.oss.model.PutObjectResult;
|
|
||||||
import com.nflg.mobilebroken.starter.service.FileUploadService;
|
import com.nflg.mobilebroken.starter.service.FileUploadService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|
@ -14,6 +13,8 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ConditionalOnProperty(name = "file.upload.type", havingValue = "oss")
|
@ConditionalOnProperty(name = "file.upload.type", havingValue = "oss")
|
||||||
|
|
@ -41,4 +42,42 @@ public class OSSFileUploadService implements FileUploadService {
|
||||||
//log.debug("上传文件结果: " + result);
|
//log.debug("上传文件结果: " + result);
|
||||||
return StrUtil.format("{}/{}",domain, filePath);
|
return StrUtil.format("{}/{}",domain, filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String initMultipartUpload(String filePath) {
|
||||||
|
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, filePath);
|
||||||
|
InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(request);
|
||||||
|
return result.getUploadId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uploadChunk(MultipartFile file,String filePath,String uploadId, int chunkNumber) throws IOException {
|
||||||
|
UploadPartRequest uploadPartRequest = new UploadPartRequest();
|
||||||
|
uploadPartRequest.setBucketName(bucketName);
|
||||||
|
uploadPartRequest.setKey(filePath);
|
||||||
|
uploadPartRequest.setUploadId(uploadId);
|
||||||
|
uploadPartRequest.setInputStream(file.getInputStream());
|
||||||
|
uploadPartRequest.setPartSize(file.getSize());
|
||||||
|
uploadPartRequest.setPartNumber(chunkNumber);
|
||||||
|
ossClient.uploadPart(uploadPartRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String completeMultipartUpload(String filePath,String uploadId) {
|
||||||
|
ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, filePath, uploadId);
|
||||||
|
PartListing partListing = ossClient.listParts(listPartsRequest);
|
||||||
|
List<PartETag> partETags = new ArrayList<>();
|
||||||
|
for (PartSummary part : partListing.getParts()) {
|
||||||
|
partETags.add(new PartETag(part.getPartNumber(), part.getETag()));
|
||||||
|
}
|
||||||
|
CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(bucketName, filePath, uploadId, partETags);
|
||||||
|
ossClient.completeMultipartUpload(completeRequest);
|
||||||
|
return StrUtil.format("{}/{}",domain, filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void abortMultipartUpload(String filePath,String uploadId) {
|
||||||
|
AbortMultipartUploadRequest abortRequest = new AbortMultipartUploadRequest(bucketName, filePath, uploadId);
|
||||||
|
ossClient.abortMultipartUpload(abortRequest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue