加上过期时间

This commit is contained in:
xudawei 2024-03-21 14:07:56 +08:00
parent dbfab472ca
commit 0f873d6065
5 changed files with 67 additions and 3 deletions

View File

@ -144,6 +144,13 @@ public class File extends Model<File> {
@TableField("is_delete")
private Integer isDelete;
/**
* 临时授权失效时间
* 根据业务入参决定如果业务没有入参则读取file_upload_config#expiration,默认300s
*/
@TableField("expiration")
private Long expiration;
@Override
protected Serializable pkVal() {

View File

@ -108,6 +108,12 @@ public class FileUploadConfig extends Model<FileUploadConfig> {
@TableField("is_delete")
private Integer isDelete;
/**
* 临时授权失效时间,默认300s即5分钟
*/
@TableField("expiration")
private Long expiration;
@Override
protected Serializable pkVal() {

View File

@ -46,4 +46,14 @@ public class ApiSignUrlUploadRequest {
* 文件名称
*/
private String fileName;
/**
* 类型
*/
private String contentType = "multipart/form-data";
/**
* 过期时间
*/
private Long expiration;
}

View File

@ -52,4 +52,9 @@ public class SignUrlUploadDto {
* 类型
*/
private String contentType = "multipart/form-data";
/**
* 过期时间
*/
private Long expiration;
}

View File

@ -319,6 +319,29 @@ public class FileServiceImpl implements FileService {
return ossFile;
}
private File saveOssFile(FileUploadConfig fileUploadConfig, String fileName, String fileConform, String uuid,
String fileUrl, String fileMd5, Long expiration) {
File ossFile = new File();
ossFile.setAppChannelBucketNo(fileUploadConfig.getAppChannelBucketNo());
ossFile.setAppCode(fileUploadConfig.getAppCode());
ossFile.setChannelCode(fileUploadConfig.getChannelCode());
ossFile.setBucketName(fileUploadConfig.getBucketName());
ossFile.setDirectory(fileUploadConfig.getDirectory());
ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_FAIL.getCode());
ossFile.setStorageUnit(fileUploadConfig.getStorageUnit());
ossFile.setStorageSize(fileUploadConfig.getStorageSize());
ossFile.setFileFormat(fileConform);
ossFile.setFileUuid(uuid);
ossFile.setFileUrl(fileUrl);
ossFile.setUrlMd5(Utility.getMd5(fileUrl));
ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode());
ossFile.setFileName(fileName);
ossFile.setFileMd5(fileMd5);
ossFile.setExpiration(expiration);
fileDao.save(ossFile);
return ossFile;
}
private ServerFileDownloadResponse setFileDownloadResponse(File file, InputStream fileStream) {
ServerFileDownloadResponse resp = new ServerFileDownloadResponse();
resp.setUrl(file.getFileUrl());
@ -766,12 +789,14 @@ public class FileServiceImpl implements FileService {
// 生成上传文件的唯一key
String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileFormat);
// 失效时间
Long expiration = this.buildExpiration(dto, fileUploadConfig);
//1 调用阿里云/华为云 获取临时授权signUrl
SignUrlUploadVo signUrlUpload = this.fileManager.signUrlUpload(fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileName(),SIGN_URL_UPLOAD_EXPIRE_SECOND
SignUrlUploadVo signUrlUpload = this.fileManager.signUrlUpload(fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileName(),expiration
, fileUploadConfig.getChannelCode(), StringUtils.isNotBlank(dto.getContentType()) ? dto.getContentType() : "multipart/form-data");
//2 保存File对象
this.getOssFile(fileUploadConfig, dto.getFileName(), fileFormat, uuid,
signUrlUpload.getSignUrl(), Utility.getMd5(signUrlUpload.getSignUrl()));
this.saveOssFile(fileUploadConfig, dto.getFileName(), fileFormat, uuid,
signUrlUpload.getSignUrl(), Utility.getMd5(signUrlUpload.getSignUrl()), expiration);
return SignUrlUploadResponse.builder()
.signUrl(signUrlUpload.getSignUrl())
.fileKey(uuid)
@ -781,6 +806,17 @@ public class FileServiceImpl implements FileService {
.build();
}
/**
* 临时授权失效时间
* 优先从业务入参取值业务入参失效时间为空则从oss配置中取失效时间
*/
private Long buildExpiration(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig) {
if (Objects.nonNull(dto) && Objects.nonNull(dto.getExpiration())) {
return dto.getExpiration();
}
return fileUploadConfig.getExpiration();
}
/**
* 授权给第三方下载获取文件上传配置
*/