加上过期时间
This commit is contained in:
parent
dbfab472ca
commit
0f873d6065
@ -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() {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -46,4 +46,14 @@ public class ApiSignUrlUploadRequest {
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String contentType = "multipart/form-data";
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
private Long expiration;
|
||||
}
|
||||
|
||||
@ -52,4 +52,9 @@ public class SignUrlUploadDto {
|
||||
* 类型
|
||||
*/
|
||||
private String contentType = "multipart/form-data";
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
private Long expiration;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权给第三方下载,获取文件上传配置
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user