加上通过url上传文件

This commit is contained in:
xudawei 2024-04-26 11:28:20 +08:00
parent d5e228c9e6
commit d5c56fd885
13 changed files with 534 additions and 1 deletions

View File

@ -14,15 +14,18 @@ import cn.axzo.oss.http.model.FindFileKeyResponse;
import cn.axzo.oss.http.model.FindFileUrlRequest;
import cn.axzo.oss.http.model.FindFileUrlResponse;
import cn.axzo.oss.http.model.ServerFileDeleteRequest;
import cn.axzo.oss.http.model.ServerFileUploadByUrlRequest;
import cn.axzo.oss.http.model.ServerFileUploadRequest;
import cn.axzo.oss.http.model.ServerFileUploadResponse;
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadByUrlDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.service.api.FileByUrlService;
import cn.axzo.oss.service.api.FileService;
import cn.azxo.framework.common.model.CommonResponse;
import cn.hutool.json.JSONUtil;
@ -47,6 +50,9 @@ public class ServerFileController implements ServerFileServiceApi {
@Autowired
private FileService fileService;
@Autowired
private FileByUrlService fileByUrlService;
@Autowired
private HttpServletRequest httpServletRequest;
@ -127,4 +133,18 @@ public class ServerFileController implements ServerFileServiceApi {
ContextInfo.LiteSaasContext liteSaasContext = JSONUtil.toBean(contextInfoLiteJsonStr, ContextInfo.LiteSaasContext.class);
return CommonResponse.success(BeanConverter.convert(fileService.signUrlUpload(dto, liteSaasContext), ApiSignUrlUploadResponse.class));
}
/**
* 通过URL上传文件
* @param request
* @return
*/
@Override
public CommonResponse<ServerFileUploadResponse> uploadByUrl(@Valid @RequestBody ServerFileUploadByUrlRequest request) {
ServerFileUploadByUrlDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadByUrlDto.class);
// 获取feign调用请求头携带的用户信息
String contextInfoLiteJsonStr = httpServletRequest.getHeader("X-CONTEXT-INFO-LITE");
ContextInfo.LiteSaasContext liteSaasContext = JSONUtil.toBean(contextInfoLiteJsonStr, ContextInfo.LiteSaasContext.class);
return CommonResponse.success(BeanConverter.convert(fileByUrlService.uploadByUrl(dto.getAppCode(), dto.getBizScene(), dto.getFileName(), dto.getFileUrl(), dto.getChannelCode(), liteSaasContext), ServerFileUploadResponse.class));
}
}

View File

@ -26,6 +26,7 @@ public enum ChannelTypeEnum {
private final String channelCode;
private final static Map<String, ChannelTypeEnum> channelCodeMap = Arrays.stream(ChannelTypeEnum.values()).collect(Collectors.toMap(ChannelTypeEnum::getChannelCode, Function.identity()));
private final static Map<Integer, ChannelTypeEnum> codeMap = Arrays.stream(ChannelTypeEnum.values()).collect(Collectors.toMap(ChannelTypeEnum::getCode, Function.identity()));
ChannelTypeEnum(Integer code, String message, String channelCode) {
this.code = code;
@ -45,9 +46,16 @@ public enum ChannelTypeEnum {
}
/**
* 通过code获取枚举
* 通过channelCode获取枚举
*/
public static ChannelTypeEnum getChannelTypeByChannelCode(String channelCode) {
return channelCodeMap.get(channelCode);
}
/**
* 通过code获取枚举
*/
public static ChannelTypeEnum getChannelTypeByCode(Integer code) {
return codeMap.get(code);
}
}

View File

@ -10,6 +10,7 @@ import cn.axzo.oss.http.model.FindFileKeyResponse;
import cn.axzo.oss.http.model.FindFileUrlRequest;
import cn.axzo.oss.http.model.FindFileUrlResponse;
import cn.axzo.oss.http.model.ServerFileDeleteRequest;
import cn.axzo.oss.http.model.ServerFileUploadByUrlRequest;
import cn.axzo.oss.http.model.ServerFileUploadRequest;
import cn.axzo.oss.http.model.ServerFileUploadResponse;
import cn.axzo.oss.http.model.ServerFileUploadV2Request;
@ -82,4 +83,12 @@ public interface ServerFileServiceApi {
@RequestMapping(value = "api/signUrl/fetchUpload", method = RequestMethod.POST)
CommonResponse<ApiSignUrlUploadResponse> signUrlFetchUpload(ApiSignUrlUploadRequest request);
/**
* 通过URL上传文件
* @param request
* @return
*/
@RequestMapping(value = "/api/v1/server/uploadByUrl", method = RequestMethod.POST)
CommonResponse<ServerFileUploadResponse> uploadByUrl(ServerFileUploadByUrlRequest request);
}

View File

@ -0,0 +1,31 @@
package cn.axzo.oss.http.model;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 服务端文件上传请求类
*
* @author zhaoyong
* @see ServerFileUploadByUrlRequest
* @since 2021-07-23 10:35
*/
@Data
public class ServerFileUploadByUrlRequest {
@NotBlank(message = "appCode must not be null")
private String appCode;
@NotBlank(message = "bizScene must not be null")
private String bizScene;
@NotBlank(message = "fileName must not be null")
@Length(max = 128, message = "文件名不能超过128个字符")
private String fileName;
@NotNull(message = "fileUrl must not be null")
private String fileUrl;
private Integer channelCode;
}

View File

@ -29,4 +29,9 @@ public interface AliOssService extends BaseS3Service {
* 获取url
*/
String getUrl(String bucketName, String tgtFileKey);
/**
* 通过url上传至OBS
*/
String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url);
}

View File

@ -40,4 +40,9 @@ public interface HuaWeiCloudService {
* 获取url
*/
String getUrl(String bucketName, String tgtFileKey);
/**
* 通过url上传OBS
*/
String uploadFileByUrl(String bucketName, String key, String fileName, String url);
}

View File

@ -359,4 +359,29 @@ public class AliOssServiceImpl implements AliOssService {
throw new BizException(CodeEnum.DELETE_FILE_FAIL);
}
}
/**
* 通过url上传至OSS
*/
@Override
public String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url) {
OSS client = aliOssClient.getClient();
try {
InputStream srcStream = new URL(url).openStream();
// 创建上传文件的元信息通过文件云信息设置HTTP Header
ObjectMetadata metadata = new ObjectMetadata();
// 设置内容被下载时的名称
metadata.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\"");
metadata.setContentEncoding("utf-8");
client.putObject(bucketName, tgtFileKey, srcStream, metadata);
} catch (OSSException e) {
LogUtil.error("uploadByStream OSSException", e);
return "";
} catch (Exception e) {
LogUtil.error("uploadByStream ClientException", e);
return "";
}
return getUrl(bucketName, tgtFileKey);
}
}

View File

@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
@ -403,4 +404,28 @@ public class HuaWeiCloudServiceImpl implements HuaWeiCloudService {
return allBuilder.toString();
}
/**
* 通过URL上传文件到OBS
*/
@Override
public String uploadFileByUrl(String bucketName, String key, String fileName, String url) {
ObsClient obsClient = huaWeiCloudObsClient.getClient();
try {
InputStream srcStream = new URL(url).openStream();
// 创建上传文件的元信息通过文件云信息设置HTTP Header
ObjectMetadata metadata = new ObjectMetadata();
// 设置内容被下载时的名称
metadata.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\"");
metadata.setContentEncoding("utf-8");
PutObjectResult putObjectResult = obsClient.putObject(bucketName, key, srcStream, metadata);
return putObjectResult.getObjectUrl();
} catch (Exception e) {
log.error("通过url上传 exception,bucketName:{}, key:{}, fileName:{},url:{}", bucketName, key, fileName, url);
return "";
}
}
}

View File

@ -75,4 +75,10 @@ public interface FileManager {
* 根据华为云/阿里云授权给第三方下载
*/
String fetchDownloadUrl(String bucketName, String key, String channelCode);
/**
* 通过url上传至云
*/
String uploadByUrl(String bulkName, String keyPath, String fileName, String url,
Integer channelType);
}

View File

@ -0,0 +1,28 @@
package cn.axzo.oss.manager.api.dto.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @program: oss
* @description: 文件上传
* @author: mr.jie
* @date: 2021-07-29 18:31
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ServerFileUploadByUrlDto {
private String appCode;
private String bizScene;
private String fileName;
private String fileUrl;
private String filePath;
private Integer channelCode;
}

View File

@ -252,4 +252,26 @@ public class FileManagerImpl implements FileManager {
}
return StringUtils.EMPTY;
}
/**
* 通过url上传至云
*/
public String uploadByUrl(String bulkName, String keyPath, String fileName, String url,
Integer channelType) {
try {
switch (ChannelTypeEnum.getChannelTypeByCode(channelType)) {
case OSS:
return aliOssService.uploadByUrl(bulkName,keyPath, fileName, url);
case OBS:
return huaWeiCloudService.uploadFileByUrl(bulkName, keyPath, fileName, url);
default:
BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST);
}
} catch (Exception e) {
log.error("通过url上传至云 exception,bulkName:{}, key:{}, fileName:{}, url:{},channelType:{}"
, bulkName, keyPath, fileName, url, channelType, e);
}
return StringUtils.EMPTY;
}
}

View File

@ -0,0 +1,41 @@
package cn.axzo.oss.service.api;
import cn.axzo.framework.auth.domain.ContextInfo;
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadInitDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileDownloadDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.response.FileInformationResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
import cn.axzo.oss.manager.api.dto.response.MultipartUploadInitResponse;
import cn.axzo.oss.manager.api.dto.response.MultipartUploadResponse;
import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse;
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
import cn.axzo.oss.manager.api.dto.response.SignUrlDownloadResponse;
import cn.axzo.oss.manager.api.dto.response.SignUrlUploadResponse;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* @Author admin
* @Description
* @Date 2021/7/28 22:48
* @Version 0.0.1
**/
public interface FileByUrlService {
/**
* 上传-通过url
*/
ServerFileUploadResponse uploadByUrl(String appCode, String bizScene, String fileName, String url,Integer channelType, ContextInfo.LiteSaasContext liteSaasContext);
}

View File

@ -0,0 +1,308 @@
package cn.axzo.oss.service.impl;
import cn.axzo.framework.auth.domain.ContextInfo;
import cn.axzo.log.platform.client.LogPlatClient;
import cn.axzo.log.platform.client.model.OperateLogReq;
import cn.axzo.oss.common.constans.CommonConstants;
import cn.axzo.oss.common.constans.CommonConstants.FileStatus;
import cn.axzo.oss.common.constans.CommonConstants.TableDelete;
import cn.axzo.oss.common.enums.BucketTypeEnum;
import cn.axzo.oss.common.enums.ChannelTypeEnum;
import cn.axzo.oss.common.enums.CodeEnum;
import cn.axzo.oss.common.enums.FileClassEnum;
import cn.axzo.oss.common.enums.FileDownloadTypeEnum;
import cn.axzo.oss.common.enums.FileStatusEnum;
import cn.axzo.oss.common.enums.FileUploadTypeEnum;
import cn.axzo.oss.common.exception.BizException;
import cn.axzo.oss.common.utils.JsonUtil;
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.FileApp;
import cn.axzo.oss.dal.entity.FileBusinessScene;
import cn.axzo.oss.dal.entity.FileUploadConfig;
import cn.axzo.oss.dal.repository.FileAppDao;
import cn.axzo.oss.dal.repository.FileDao;
import cn.axzo.oss.integration.s3.config.HuaWeiCloudObsConfig;
import cn.axzo.oss.manager.api.AppChannelBucketManager;
import cn.axzo.oss.manager.api.FileBusinessSceneManager;
import cn.axzo.oss.manager.api.FileManager;
import cn.axzo.oss.manager.api.FileUploadConfigManager;
import cn.axzo.oss.manager.api.dto.PartETag;
import cn.axzo.oss.manager.api.dto.request.DeleteFileDto;
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadCompleteDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadFileDto;
import cn.axzo.oss.manager.api.dto.request.MultipartUploadInitDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileDownloadDto;
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto;
import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto;
import cn.axzo.oss.manager.api.dto.response.FileInformationResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
import cn.axzo.oss.manager.api.dto.response.MultipartUploadInitResponse;
import cn.axzo.oss.manager.api.dto.response.MultipartUploadResponse;
import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse;
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
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.FileByUrlService;
import cn.axzo.oss.service.api.FileService;
import cn.hutool.core.collection.CollectionUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import static cn.axzo.oss.common.constans.CommonConstants.APP_PRO_BUCKET_NAME;
/**
* @Author admin
* @Description
* @Date 2021/7/28 22:48
* @Version 0.0.1
**/
@Service
@RefreshScope
@Slf4j
public class FileByUrlServiceImpl implements FileByUrlService {
private static final String FILE_UPLOAD_CODE = "OSS_FILE_UPLOAD";
private static final String FILE_UPLOAD_NAME = "文件上传";
@Autowired
private FileDao fileDao;
@Autowired
private FileManager fileManager;
@Autowired
private FileAppDao fileAppDao;
@Autowired
private AppChannelBucketManager appChannelBucketManager;
@Autowired
private FileBusinessSceneManager fileBusinessSceneManager;
@Autowired
private FileUploadConfigManager fileUploadConfigManager;
@Autowired
private Environment environment;
@Autowired
private LogPlatClient logPlatClient;
/**
* 通过url上传
*/
@Override
public ServerFileUploadResponse uploadByUrl(String appCode, String bizScene, String fileName, String url, Integer channelType, ContextInfo.LiteSaasContext liteSaasContext) {
File ossFile = uploadFileAndGetFile(appCode, bizScene, fileName, url, channelType);
//操作日志记录
operateLog(this.buildUploadParams(appCode, bizScene, fileName, url, channelType), "", FILE_UPLOAD_CODE, FILE_UPLOAD_NAME, liteSaasContext);
return buildResponse(ossFile);
}
/**
* 操作日志记录
*/
private void operateLog(String param, String serviceName, String featureCode, String featureName, ContextInfo.LiteSaasContext liteSaasContext) {
if (liteSaasContext == null || liteSaasContext.getIdentityId() == null || liteSaasContext.getIdentityType() == null) {
log.warn("获取用户上下文信息失败");
return;
}
//记录日志
try {
OperateLogReq log = OperateLogReq.builder()
.serviceName(StringUtils.isNotEmpty(serviceName) ? serviceName : environment.getProperty("spring.application.name"))
.featureCode(featureCode)
.featureName(featureName)
.operateTime(new Date())
.identityId(liteSaasContext.getIdentityId())
.identityType(liteSaasContext.getIdentityType())
.operateParam(param)
.workspaceId(liteSaasContext.getWorkspaceId())
.operateType(1)
.build();
logPlatClient.createOperateLog(log);
} catch (Exception e) {
log.warn("服务间调用异常-发送日志失败: errMsg={}.", e.getMessage());
}
}
/**
* 上传并获取文件
*/
private File uploadFileAndGetFile(String appCode, String bizScene, String fileName, String url, Integer channelType) {
log.info("update channelType:{}, fileName:{}, appCode:{}, bizScene:{}",
channelType, fileName, appCode, bizScene);
FileUploadConfig fileUploadConfig = getFileUploadConfig(appCode, bizScene, channelType);
// 上传文件并生成file对象
return generateFile(fileUploadConfig, appCode, fileName,url, channelType);
}
/**
* 获取配置信息
*/
private FileUploadConfig getFileUploadConfig(String appCode, String bizScene, Integer channelType) {
// 检查appCode
checkAppCode(appCode);
// 通过appcode获取文件渠道桶信息
AppChannelBucket appChannelBucket = appChannelBucketManager.getByAppCode(appCode, channelType);
// 通过渠道桶编码获取到具体文件业务场景
FileBusinessScene scene = fileBusinessSceneManager
.getByBucketNoAndScene(appChannelBucket.getAppChannelBucketNo(), bizScene);
// 通过渠道码和桶名称获取获取指定上传配置
FileUploadConfig fileUploadConfig = fileUploadConfigManager
.getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory());
return fileUploadConfig;
}
/**
* 检查appCode是否有效
*
* @param appCode
*/
private void checkAppCode(final String appCode) {
log.info("checkAppCode appCode = {}", appCode);
FileApp fileApp = fileAppDao.getByAppCode(appCode);
BizException.error(Utility.objIsNotNull(fileApp), CodeEnum.FILE_APP_IS_EMPTY);
}
/**
* 生产File对象
*/
private File generateFile(FileUploadConfig fileUploadConfig, String appCode, String fileName, String url, Integer channelType) {
// 判断容量
String fileConform = isFileConform(fileUploadConfig, fileName);
String uuid = Utility.getUUID();
// 生成上传文件的唯一key
String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileConform);
// 上传文件
String fileUrl = fileManager.uploadByUrl(fileUploadConfig.getBucketName(), tgtFileKey, fileName, url, channelType);
// 保存失败
if (Utility.isBlank(fileUrl)) {
log.error("fileUrl is empty");
throw new BizException(CodeEnum.FILE_UPLOAD_FAILED);
}
File file = rebuildOssFile(fileUploadConfig, fileName, fileConform, uuid, fileUrl, Utility.getMd5(url));
fileDao.save(file);
return file;
}
/**
*
* @param fileUploadConfig
* @param fileName
* @param fileConform
* @param uuid
* @param fileUrl
* @param fileMd5
* @return
*/
private File rebuildOssFile(FileUploadConfig fileUploadConfig, String fileName, String fileConform, String uuid,
String fileUrl, String fileMd5) {
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);
return ossFile;
}
/**
* 判断文件是否符合要求
*/
private String isFileConform(FileUploadConfig fileUploadConfig, String fileName) {
// 文件格式判断
String[] formats = fileUploadConfig.getFileFormat().split(FileClassEnum.COMMA.type);
int lastIndexOf = fileName.lastIndexOf(FileClassEnum.DOT.type);
BizException
.error(lastIndexOf != CommonConstants.NOT_FOUND_INDEX_OF, CodeEnum.NOT_FILE_FORMAT);
// 是否包含指定格式
String fileFormat = fileName.substring(lastIndexOf + CommonConstants.ONE).toLowerCase();
boolean contains = Arrays.asList(formats).contains(fileFormat);
BizException.error(contains, CodeEnum.FILE_FORMAT_NOT_SUPPORTED);
return fileFormat;
}
/**
* 构建操作日志入参
*/
private String buildUploadParams(String appCode, String bizScene, String fileName, String url,Integer channelType) {
StringBuilder builder = new StringBuilder("appCode:");
builder.append(appCode).append(";");
builder.append("bizScene").append(":");
builder.append(bizScene).append(";");
builder.append("fileName").append(":");
builder.append(fileName).append(";");
builder.append("url").append(":");
builder.append(url).append(";");
builder.append("channelType").append("");
builder.append(channelType).append(";");
return builder.toString();
}
/**
* 构建返回对象
*/
private ServerFileUploadResponse buildResponse(File ossFile) {
ServerFileUploadResponse response = new ServerFileUploadResponse();
response.setUrl(ossFile.getFileUrl());
response.setUrlMd5(ossFile.getUrlMd5());
response.setFileKey(ossFile.getFileUuid());
return response;
}
}