临时授权-私有桶与公有桶返回路径处理
This commit is contained in:
parent
f3cc4cfa1e
commit
8f8a720f6d
@ -33,7 +33,7 @@ public enum BucketTypeEnum {
|
||||
/**
|
||||
* 通过code获取枚举
|
||||
*/
|
||||
public static BucketTypeEnum getByCode(String channelCode) {
|
||||
return channelCodeMap.get(channelCode);
|
||||
public static BucketTypeEnum getByCode(String code) {
|
||||
return channelCodeMap.get(code);
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,11 +48,17 @@ public enum CodeEnum implements EnumBase<Integer> {
|
||||
MULTIPART_UPLOAD_ERROR(114, "文件上传失败"),
|
||||
MULTIPART_UPLOAD_COMPLETE_ERROR(115, "文件上传失败"),
|
||||
|
||||
OBS_CLIENT_NULL(116,"obs client为空"),
|
||||
CHANNEL_TYPE_NOT_EXIST(117,"渠道不存在"),
|
||||
DELETE_FILE_FAIL(118,"删除文件失败"),
|
||||
UPLOAD_SIGN_URL_FAIL(119,"上传临时授权获取SIGNURL失败"),
|
||||
DOWNLOAD_SIGN_URL_FAIL(120,"下载临时授权获取SIGNURL失败"),
|
||||
ICON_GROUP_EXIST(116, "图标组已存在"),
|
||||
ICON_GROUP_NOT_EXIST(117, "图标组不存在"),
|
||||
ICON_EXIST(118, "图标已存在"),
|
||||
|
||||
OBS_CLIENT_NULL(119,"obs client为空"),
|
||||
CHANNEL_TYPE_NOT_EXIST(120,"渠道不存在"),
|
||||
DELETE_FILE_FAIL(121,"删除文件失败"),
|
||||
UPLOAD_SIGN_URL_FAIL(122,"上传临时授权获取SIGNURL失败"),
|
||||
DOWNLOAD_SIGN_URL_FAIL(123,"下载临时授权获取SIGNURL失败"),
|
||||
FILE_FORMAT_MAY_ERROR(124, "文件格式可能错误"),
|
||||
FILE_APP_IS_EMPTY(125, "app is empty")
|
||||
|
||||
;
|
||||
|
||||
|
||||
@ -24,4 +24,9 @@ public interface AliOssService extends BaseS3Service {
|
||||
* 删除文件
|
||||
*/
|
||||
void deleteFile(String bucketName, String key);
|
||||
|
||||
/**
|
||||
* 获取url
|
||||
*/
|
||||
String getUrl(String bucketName, String tgtFileKey);
|
||||
}
|
||||
|
||||
@ -31,4 +31,9 @@ public interface HuaWeiCloudService {
|
||||
* 删除File
|
||||
*/
|
||||
void deleteFile(String bucketName, String key);
|
||||
|
||||
/**
|
||||
* 获取url
|
||||
*/
|
||||
String getUrl(String bucketName, String tgtFileKey);
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ public class AliOssServiceImpl implements AliOssService {
|
||||
return getUrl(bucketName, tgtFileKey);
|
||||
}
|
||||
|
||||
private String getUrl(String bucketName, String tgtFileKey) {
|
||||
public String getUrl(String bucketName, String tgtFileKey) {
|
||||
StringBuilder allBuilder = new StringBuilder();
|
||||
allBuilder.append("https://");
|
||||
allBuilder.append(bucketName);
|
||||
|
||||
@ -292,4 +292,16 @@ public class HuaWeiCloudServiceImpl implements HuaWeiCloudService {
|
||||
throw new BizException(CodeEnum.DELETE_FILE_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
public String getUrl(String bucketName, String tgtFileKey) {
|
||||
StringBuilder allBuilder = new StringBuilder();
|
||||
allBuilder.append("https://");
|
||||
allBuilder.append(bucketName);
|
||||
allBuilder.append(".");
|
||||
allBuilder.append(huaWeiCloudObsClient.getEndpoint());
|
||||
allBuilder.append("/");
|
||||
allBuilder.append(tgtFileKey);
|
||||
|
||||
return allBuilder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package cn.axzo.oss.manager.api;
|
||||
|
||||
import cn.axzo.oss.manager.api.dto.PartETag;
|
||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
|
||||
import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@ -66,4 +67,9 @@ public interface FileManager {
|
||||
* 删除File
|
||||
*/
|
||||
void deleteFile(String bucketName, String key, String channelCode);
|
||||
|
||||
/**
|
||||
* 根据华为云/阿里云,授权给第三方下载
|
||||
*/
|
||||
String fetchDownloadUrl(String bucketName, String key, String channelCode);
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import cn.axzo.oss.integration.s3.HuaWeiCloudService;
|
||||
import cn.axzo.oss.manager.api.FileManager;
|
||||
import cn.axzo.oss.manager.api.dto.PartETag;
|
||||
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
|
||||
import com.obs.services.model.TemporarySignatureResponse;
|
||||
import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
|
||||
import com.obs.services.model.TemporarySignatureResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -192,4 +193,21 @@ public class FileManagerImpl implements FileManager {
|
||||
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据华为云/阿里云,授权给第三方下载
|
||||
*/
|
||||
@Override
|
||||
public String fetchDownloadUrl(String bucketName, String key, String channelCode) {
|
||||
ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(channelCode);
|
||||
switch (typeEnum) {
|
||||
case OBS:// 华为云
|
||||
return huaWeiCloudService.getUrl(bucketName, key);
|
||||
case OSS:// 阿里云
|
||||
return aliOssService.getUrl(bucketName, key);
|
||||
default:
|
||||
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
|
||||
}
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ public class FileServiceImpl implements FileService {
|
||||
private void checkAppCode(final String appCode) {
|
||||
log.info("checkAppCode appCode = {}", appCode);
|
||||
FileApp fileApp = fileAppDao.getByAppCode(appCode);
|
||||
BizException.error(Utility.objIsNotNull(fileApp), CodeEnum.APP_CODE_NOT_FOUND);
|
||||
BizException.error(Utility.objIsNotNull(fileApp), CodeEnum.FILE_APP_IS_EMPTY);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -752,11 +752,23 @@ public class FileServiceImpl implements FileService {
|
||||
Long expire = bizSceneExpireMap.get(item.getAppChannelBucketNo());
|
||||
// bucket下的key
|
||||
String tgtFileKey = Utility.generateFileKey(item.getDirectory(), item.getFileUuid(), item.getFileFormat());
|
||||
String signUrl = this.fileManager.signUrlDownload(item.getBucketName(), tgtFileKey, Objects.nonNull(expire) ? expire : SIGN_URL_DOWNLOAD_EXPIRE_SECOND , item.getChannelCode());
|
||||
return SignUrlDownloadResponse.builder()
|
||||
.signUrl(signUrl)
|
||||
.fileKey(item.getFileUuid())
|
||||
.build();
|
||||
switch (BucketTypeEnum.getByCode(bucketTypeMap.get(item.getAppChannelBucketNo()))) {
|
||||
case PUBLIC_BUCKET:
|
||||
String url = this.fileManager.fetchDownloadUrl(item.getBucketName(), tgtFileKey, item.getChannelCode());
|
||||
return SignUrlDownloadResponse.builder()
|
||||
.signUrl(url)
|
||||
.fileKey(item.getFileUuid())
|
||||
.build();
|
||||
case PRIVATE_BUCKET:
|
||||
String signUrl = this.fileManager.signUrlDownload(item.getBucketName(), tgtFileKey, Objects.nonNull(expire) ? expire : SIGN_URL_DOWNLOAD_EXPIRE_SECOND , item.getChannelCode());
|
||||
return SignUrlDownloadResponse.builder()
|
||||
.signUrl(signUrl)
|
||||
.fileKey(item.getFileUuid())
|
||||
.build();
|
||||
default:
|
||||
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
|
||||
}
|
||||
return SignUrlDownloadResponse.builder().build();
|
||||
}).collect(Collectors.toList());
|
||||
log.info("signUrl download end dto = {}, times:{}", JsonUtil.obj2Str(dto), System.currentTimeMillis() - start);
|
||||
return responseList;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user