临时授权加上-不保存file至本地db

This commit is contained in:
xudawei 2024-06-25 14:43:48 +08:00
parent 3d26392123
commit 8bb392446f
12 changed files with 374 additions and 98 deletions

View File

@ -137,6 +137,15 @@ public class ServerFileController implements ServerFileServiceApi {
return CommonResponse.success(BeanConverter.convert(fileService.signUrlDownload(dto), ApiSignUrlDownloadResponse.class));
}
/**
* 授权给第三方下载-生成临时url
*/
@Override
public CommonResponse<List<ApiSignUrlDownloadResponse>> signUrlFetchDownloadNoFile(@Valid @RequestBody ApiSignUrlDownloadRequest request) {
SignUrlDownloadDto dto = BeanConvertUtil.copyBean(request, SignUrlDownloadDto.class);
return CommonResponse.success(BeanConverter.convert(fileService.signUrlDownloadNoFile(dto), ApiSignUrlDownloadResponse.class));
}
/**
* 授权给第三方上传-生成临时url
*/

View File

@ -20,9 +20,11 @@ import cn.axzo.oss.http.model.ServerFileUploadResponse;
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.validation.Valid;
import java.util.List;
/**
@ -81,6 +83,14 @@ public interface ServerFileServiceApi {
@RequestMapping(value = "api/signUrl/fetchDownload", method = RequestMethod.POST)
CommonResponse<List<ApiSignUrlDownloadResponse>> signUrlFetchDownload(ApiSignUrlDownloadRequest request);
/**
* 临时授权下载-生成临时url
*/
@RequestMapping(value = "api/signUrl/fetchDownloadNoFile", method = RequestMethod.POST)
CommonResponse<List<ApiSignUrlDownloadResponse>> signUrlFetchDownloadNoFile(@Valid @RequestBody ApiSignUrlDownloadRequest request);
/**
* 临时授权上传-生成临时url
*/

View File

@ -32,6 +32,11 @@ public class ApiSignUrlDownloadRequest {
*/
private String bizScene;
/**
* bizScene,对应目录
*/
private String appCode;
/**
* 图片样式比如x-oss-process=image/auto-orient,1/resize,p_50/quality,q_30
*/

View File

@ -61,4 +61,8 @@ public class ApiSignUrlUploadRequest {
* 是否带上文件名称
*/
private Boolean hasFileName = true;
/**
* 桶key
*/
private String bucketKey;
}

View File

@ -34,6 +34,8 @@ public class SignUrlDownloadDto {
*/
private String bizScene;
private String appCode;
/**
* 图片样式比如x-oss-process=image/auto-orient,1/resize,p_50/quality,q_30
*/

View File

@ -62,4 +62,9 @@ public class SignUrlUploadDto {
* 是否带上文件名称
*/
private Boolean hasFileName = true;
/**
* 桶key
*/
private String bucketKey;
}

View File

@ -92,4 +92,9 @@ public interface FileService {
* 元数据
*/
ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode);
/**
* 授权给第三方下载
*/
List<SignUrlDownloadResponse> signUrlDownloadNoFile(SignUrlDownloadDto dto);
}

View File

@ -54,6 +54,8 @@ import cn.axzo.oss.manager.api.dto.response.SignUrlDownloadResponse;
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
import cn.axzo.oss.service.api.FileService;
import cn.axzo.oss.service.metafile.WithFileFactory;
import cn.axzo.oss.service.metafile.WithFileService;
import cn.hutool.core.collection.CollectionUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@ -133,8 +135,8 @@ public class FileServiceImpl implements FileService {
@Value("${sign.url.download.expire.second:2000}")
private Long SIGN_URL_DOWNLOAD_EXPIRE_SECOND;
@Value("${sign.url.upload.expire.second:2000}")
private Long SIGN_URL_UPLOAD_EXPIRE_SECOND;
@Autowired
private WithFileFactory withFileFactory;
/**
* 删除文件
@ -892,29 +894,46 @@ public class FileServiceImpl implements FileService {
// bucket下的key
String tgtFileKey = Utility.generateFileKey(item.getDirectory(), item.getFileUuid(), item.getFileFormat());
String bucketType = StringUtils.isNotBlank(bucketTypeMap.get(item.getAppChannelBucketNo())) ? bucketTypeMap.get(item.getAppChannelBucketNo()) : BucketTypeEnum.PRIVATE_BUCKET.getCode();
switch (BucketTypeEnum.getByCode(bucketType)) {
case PUBLIC_BUCKET://公有桶 - 永久链接例如 http://xxx.png
String url = this.fileManager.fetchDownloadUrl(item.getBucketName(), tgtFileKey, item.getChannelCode());
return SignUrlDownloadResponse.builder()
.signUrl(this.buildPublicXImageProcess(url, style))
.fileKey(item.getFileUuid())
.fileName(item.getFileName())
.build();
case PRIVATE_BUCKET://私有桶 - 临时授权链接 例如 http://xxx.png?Expire=a&AccessKeyId=b&Signature=c&repsonse-content-disposition=d
String signUrl = this.fileManager.signUrlDownload(item.getBucketName(), tgtFileKey, Objects.nonNull(expire) ? expire : SIGN_URL_DOWNLOAD_EXPIRE_SECOND , item.getChannelCode(), item.getFileName(), style, hasFileName);
return SignUrlDownloadResponse.builder()
.signUrl(UrlUtil.httpToHttps(signUrl))
.fileKey(item.getFileUuid())
.fileName(item.getFileName())
.build();
default:
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
}
return SignUrlDownloadResponse.builder().build();
return this.buildSignUrlDownloadResponse(bucketType, item.getBucketName(), tgtFileKey, item.getChannelCode(), item.getFileUuid(), item.getFileName(), style, hasFileName, expire);
}).collect(Collectors.toList());
return responseList;
}
/**
* 构建临时授权下载返回对象
* @param bucketType 公有桶/私有桶
* @param bucketName 桶名称
* @param tgtFileKey 桶key
* @param channelCode aliyun/huaweicloud
* @param fileUuid 文件标识
* @param fileName 文件名称
* @param style 裁剪样式
* @param hasFileName 是否显示文件名称
* @param expire 过期时间
* @return 临时授权下载返回对象
*/
private SignUrlDownloadResponse buildSignUrlDownloadResponse(String bucketType, String bucketName, String tgtFileKey, String channelCode, String fileUuid, String fileName, String style, Boolean hasFileName,Long expire) {
switch (BucketTypeEnum.getByCode(bucketType)) {
case PUBLIC_BUCKET://公有桶 - 永久链接例如 http://xxx.png
String url = this.fileManager.fetchDownloadUrl(bucketName, tgtFileKey, channelCode);//item.getBucketName() item.getChannelCode()
return SignUrlDownloadResponse.builder()
.signUrl(this.buildPublicXImageProcess(url, style))
.fileKey(fileUuid)//item.getFileUuid()
.fileName(fileName)//item.getFileName()
.build();
case PRIVATE_BUCKET://私有桶 - 临时授权链接 例如 http://xxx.png?Expire=a&AccessKeyId=b&Signature=c&repsonse-content-disposition=d
String signUrl = this.fileManager.signUrlDownload(bucketName, tgtFileKey, Objects.nonNull(expire) ? expire : SIGN_URL_DOWNLOAD_EXPIRE_SECOND , channelCode, fileName, style, hasFileName);
return SignUrlDownloadResponse.builder()
.signUrl(UrlUtil.httpToHttps(signUrl))
.fileKey(fileUuid)
.fileName(fileName)
.build();
default:
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
}
return SignUrlDownloadResponse.builder().build();
}
/**
* 构建http链接(非fileKey入参)返回对象
*/
@ -1058,87 +1077,12 @@ public class FileServiceImpl implements FileService {
//操作日志记录
operateLog(dto.toString(), dto.getServiceName(), FILE_UPLOAD_CODE, FILE_UPLOAD_NAME, liteSaasContext);
//3 保存File对象
SignUrlUploadResponse response = this.signUrlSaveFile(dto, fileUploadConfig, scene, appChannelBucket);
WithFileService withFileService = withFileFactory.getFileService(dto.getBizScene());
SignUrlUploadResponse response = withFileService.saveFile(dto, fileUploadConfig, scene, appChannelBucket);
log.info("signUrl upload dto = {}, times:{}", JsonUtil.obj2Str(dto), System.currentTimeMillis() - start);
return response;
}
/**
*
* @param dto
* @param fileUploadConfig
* @return
*/
private SignUrlUploadResponse signUrlSaveFile(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig, FileBusinessScene scene, AppChannelBucket appChannelBucket) {
String uuid = Utility.getUUID();
int lastIndexOf = dto.getFileName().lastIndexOf(FileClassEnum.DOT.type);
BizException
.error(lastIndexOf != CommonConstants.NOT_FOUND_INDEX_OF, CodeEnum.NOT_FILE_FORMAT);
// 是否包含指定格式
String fileFormat = dto.getFileName().substring(lastIndexOf + CommonConstants.ONE).toLowerCase();
// 文件格式判断
String[] formats = fileUploadConfig.getFileFormat().split(FileClassEnum.COMMA.type);
// 是否包含指定格式
BizException.error(Arrays.asList(formats).contains(fileFormat), CodeEnum.FILE_FORMAT_NOT_SUPPORTED);
// 生成上传文件的唯一key
String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileFormat);
// 失效时间
Long expiration = this.buildExpiration(dto, scene);
//1 调用阿里云/华为云 获取临时授权signUrl
SignUrlUploadVo signUrlUpload = this.fileManager.signUrlUpload(fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileName(),expiration
, fileUploadConfig.getChannelCode()
, StringUtils.isNotBlank(dto.getContentType()) ? dto.getContentType() : "multipart/form-data", appChannelBucket.getBucketType()
, Objects.isNull(dto.getHasFileName()) ? true: dto.getHasFileName() );
//2 保存File对象
this.saveOssFile(fileUploadConfig, dto.getFileName(), fileFormat, uuid,
signUrlUpload.getDownloadSignUrl(), Utility.getMd5(signUrlUpload.getDownloadSignUrl()), expiration);
return SignUrlUploadResponse.builder()
.signUrl(UrlUtil.httpToHttps(signUrlUpload.getSignUrl()))
.fileKey(uuid)
.contentType(signUrlUpload.getContentType())
.host(signUrlUpload.getHost())
.channelCode(signUrlUpload.getChannelCode())
.downloadSignUrl(UrlUtil.httpToHttps(signUrlUpload.getDownloadSignUrl()))
.fileName(dto.getFileName())
.build();
}
/**
* 临时授权失效时间
* 优先从业务入参取值业务入参失效时间为空则从oss配置中取失效时间
*/
private Long buildExpiration(SignUrlUploadDto dto, FileBusinessScene scene) {
if (Objects.nonNull(dto) && Objects.nonNull(dto.getExpiration())) {
return dto.getExpiration();
}
return scene.getUploadExpiration();
}
/**
* 授权给第三方下载获取文件上传配置
*/
private FileUploadConfig signUrlBuildUploadConfig(SignUrlUploadDto dto) {
FileUploadConfig fileUploadConfig = new FileUploadConfig();
if (Objects.nonNull(dto.getChannelType()) && StringUtils.isNoneBlank(dto.getBucketName()) && StringUtils.isNoneBlank(dto.getBizScene())) {
AppChannelBucket appChannelBucket = appChannelBucketManager.getByAppCodeChannelCodeBucket(dto.getAppCode(), dto.getChannelType(), dto.getBucketName());
// 通过渠道桶编码获取到具体文件业务场景
FileBusinessScene scene = fileBusinessSceneManager
.getByBucketNoAndScene(appChannelBucket.getAppChannelBucketNo(), dto.getBizScene());
// 通过渠道码和桶名称获取指定上传配置
fileUploadConfig = fileUploadConfigManager
.getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory());
} else {
fileUploadConfig = getFileUploadConfig(dto.getAppCode(), dto.getBizScene(), dto.getChannelType());
}
BizException.isEmpty(Objects.nonNull(fileUploadConfig) || StringUtils.isNotBlank(fileUploadConfig.getAppChannelBucketNo()), CodeEnum.NO_UPLOAD_CONFIG);
return fileUploadConfig;
}
/**
* 授权给第三方-下载
@ -1165,4 +1109,23 @@ public class FileServiceImpl implements FileService {
return response;
}
/**
* 授权给第三方下载
*/
@Override
public List<SignUrlDownloadResponse> signUrlDownloadNoFile(SignUrlDownloadDto dto) {
// 通过appcode获取文件渠道桶信息
AppChannelBucket appChannelBucket = appChannelBucketManager.getByAppCode(dto.getAppCode(), null);
// 通过渠道桶编码获取到具体文件业务场景
FileBusinessScene scene = fileBusinessSceneManager
.getByBucketNoAndScene(appChannelBucket.getAppChannelBucketNo(), dto.getBizScene());
return dto.getFileKeys().stream().map(item ->{
//构建返回集合
return this.buildSignUrlDownloadResponse(appChannelBucket.getBucketType(), appChannelBucket.getBucketName()
, item, appChannelBucket.getChannelCode(), item, null, null, false, scene.getDownloadExpiration());
}).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,54 @@
package cn.axzo.oss.service.metafile;
import com.google.common.collect.Maps;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Author xudawei@axzo.cn
* @Description file工厂
* @Date 2024/06/25
**/
@Service
@RefreshScope
public class WithFileFactory {
private Map<String, WithFileService> serviceMap = Maps.newConcurrentMap();
private static final String DEFAULT_SERVICE = "handleFileService";
@Value("${ignore.file.biz.scene:attendance,attendance1=ignoreFileService}")
private String ignoreFileBizScene;
public WithFileFactory(List<WithFileService> serviceList) {
serviceList.stream().forEach(item -> {
serviceMap.put(item.fetchServiceName(), item);
});
}
public WithFileService getFileService(String serviceKey) {
String serviceName = this.buildServiceName(serviceKey);
return Objects.nonNull(serviceMap.get(serviceName)) ? serviceMap.get(serviceName) : serviceMap.get(DEFAULT_SERVICE);
}
private String buildServiceName(String serviceKey) {
String[] strs = ignoreFileBizScene.split(";");
for (String str : strs) {
if (StringUtils.hasText(str) && str.contains(serviceKey)) {
return str.split("=")[1];
}
}
return "";
}
public void putService(String serviceName, WithFileService withFileService) {
serviceMap.put(serviceName, withFileService);
}
}

View File

@ -0,0 +1,61 @@
package cn.axzo.oss.service.metafile;
import cn.axzo.oss.common.constans.CommonConstants;
import cn.axzo.oss.common.enums.CodeEnum;
import cn.axzo.oss.common.enums.FileClassEnum;
import cn.axzo.oss.common.exception.BizException;
import cn.axzo.oss.dal.entity.AppChannelBucket;
import cn.axzo.oss.dal.entity.FileBusinessScene;
import cn.axzo.oss.dal.entity.FileUploadConfig;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
import java.util.Arrays;
import java.util.Objects;
/**
* @Author xudawei@axzo.cn
* @Description file相关
* @Date 2024/06/25
**/
public abstract class WithFileService {
public SignUrlUploadResponse saveFile(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig, FileBusinessScene scene, AppChannelBucket appChannelBucket) {
String fileFormat = this.check(dto, fileUploadConfig);
return this.doSaveFile(dto, fileUploadConfig, scene, appChannelBucket, fileFormat);
}
public abstract SignUrlUploadResponse doSaveFile(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig, FileBusinessScene scene, AppChannelBucket appChannelBucket, String fileFormat);
public abstract String fetchServiceName();
/**
* 校验
*/
public String check(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig) {
int lastIndexOf = dto.getFileName().lastIndexOf(FileClassEnum.DOT.type);
BizException
.error(lastIndexOf != CommonConstants.NOT_FOUND_INDEX_OF, CodeEnum.NOT_FILE_FORMAT);
// 是否包含指定格式
String fileFormat = dto.getFileName().substring(lastIndexOf + CommonConstants.ONE).toLowerCase();
// 文件格式判断
String[] formats = fileUploadConfig.getFileFormat().split(FileClassEnum.COMMA.type);
// 是否包含指定格式
BizException.error(Arrays.asList(formats).contains(fileFormat), CodeEnum.FILE_FORMAT_NOT_SUPPORTED);
return fileFormat;
}
/**
* 临时授权失效时间
* 优先从业务入参取值业务入参失效时间为空则从oss配置中取失效时间
*/
public Long buildExpiration(SignUrlUploadDto dto, FileBusinessScene scene) {
if (Objects.nonNull(dto) && Objects.nonNull(dto.getExpiration())) {
return dto.getExpiration();
}
return scene.getUploadExpiration();
}
}

View File

@ -0,0 +1,96 @@
package cn.axzo.oss.service.metafile.impl;
import cn.axzo.oss.common.enums.FileStatusEnum;
import cn.axzo.oss.common.utils.UrlUtil;
import cn.axzo.oss.common.utils.Utility;
import cn.axzo.oss.dal.entity.AppChannelBucket;
import cn.axzo.oss.dal.entity.File;
import cn.axzo.oss.dal.entity.FileBusinessScene;
import cn.axzo.oss.dal.entity.FileUploadConfig;
import cn.axzo.oss.dal.repository.FileDao;
import cn.axzo.oss.manager.api.FileManager;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
import cn.axzo.oss.service.metafile.WithFileService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @Author xudawei@axzo.cn
* @Description file操作
* @Date 2024/06/25
**/
@Service("handleFileService")
@RefreshScope
public class HandleFileService extends WithFileService{
@Autowired
private FileManager fileManager;
@Autowired
private FileDao fileDao;
public SignUrlUploadResponse doSaveFile(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig, FileBusinessScene scene, AppChannelBucket appChannelBucket, String fileFormat) {
String uuid = Utility.getUUID();
// 生成上传文件的唯一key
String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileFormat);
// 失效时间
Long expiration = this.buildExpiration(dto, scene);
//1 调用阿里云/华为云 获取临时授权signUrl
SignUrlUploadVo signUrlUpload = this.fileManager.signUrlUpload(fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileName(),expiration
, fileUploadConfig.getChannelCode()
, StringUtils.isNotBlank(dto.getContentType()) ? dto.getContentType() : "multipart/form-data", appChannelBucket.getBucketType()
, Objects.isNull(dto.getHasFileName()) ? true: dto.getHasFileName() );
//2 保存File对象
this.saveOssFile(fileUploadConfig, dto.getFileName(), fileFormat, uuid,
signUrlUpload.getDownloadSignUrl(), Utility.getMd5(signUrlUpload.getDownloadSignUrl()), expiration);
return SignUrlUploadResponse.builder()
.signUrl(UrlUtil.httpToHttps(signUrlUpload.getSignUrl()))
.fileKey(uuid)
.contentType(signUrlUpload.getContentType())
.host(signUrlUpload.getHost())
.channelCode(signUrlUpload.getChannelCode())
.downloadSignUrl(UrlUtil.httpToHttps(signUrlUpload.getDownloadSignUrl()))
.fileName(dto.getFileName())
.build();
}
@Override
public String fetchServiceName() {
return "handleFileService";
}
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);
fileDao.save(ossFile);
return ossFile;
}
// @Override
// public void afterPropertiesSet() throws Exception {
// withFileFactory.putService("handleFileService", this);
// }
}

View File

@ -0,0 +1,62 @@
package cn.axzo.oss.service.metafile.impl;
import cn.axzo.oss.common.utils.UrlUtil;
import cn.axzo.oss.dal.entity.AppChannelBucket;
import cn.axzo.oss.dal.entity.FileBusinessScene;
import cn.axzo.oss.dal.entity.FileUploadConfig;
import cn.axzo.oss.manager.api.FileManager;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
import cn.axzo.oss.manager.api.vo.SignUrlUploadVo;
import cn.axzo.oss.service.metafile.WithFileService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @Author xudawei@axzo.cn
* @Description 忽略file操作
* @Date 2024/06/25
**/
@Service("ignoreFileService")
@RefreshScope
public class IgnoreFileService extends WithFileService{
@Autowired
private FileManager fileManager;
public SignUrlUploadResponse doSaveFile(SignUrlUploadDto dto, FileUploadConfig fileUploadConfig, FileBusinessScene scene, AppChannelBucket appChannelBucket,String fileFormat) {
// 失效时间
Long expiration = this.buildExpiration(dto, scene);
//1 调用阿里云/华为云 获取临时授权signUrl
SignUrlUploadVo signUrlUpload = this.fileManager.signUrlUpload(fileUploadConfig.getBucketName(), dto.getBucketKey(), dto.getFileName(),expiration
, fileUploadConfig.getChannelCode()
, StringUtils.isNotBlank(dto.getContentType()) ? dto.getContentType() : "multipart/form-data", appChannelBucket.getBucketType()
, Objects.isNull(dto.getHasFileName()) ? true: dto.getHasFileName() );
return SignUrlUploadResponse.builder()
.signUrl(UrlUtil.httpToHttps(signUrlUpload.getSignUrl()))
.fileKey(dto.getBucketKey())
.contentType(signUrlUpload.getContentType())
.host(signUrlUpload.getHost())
.channelCode(signUrlUpload.getChannelCode())
.downloadSignUrl(UrlUtil.httpToHttps(signUrlUpload.getDownloadSignUrl()))
.fileName(dto.getFileName())
.build();
}
@Override
public String fetchServiceName() {
return "ignoreFileService";
}
// @Override
// public void afterPropertiesSet() throws Exception {
// withFileFactory.putService("ignoreFileService", this);
// }
}