【7.0.4】【file】文件上传返回前段的参数增加url

pull/22/head
fengshuonan 2021-06-15 22:07:13 +08:00
parent 3df9df4ada
commit b0591ca19c
5 changed files with 38 additions and 7 deletions

View File

@ -37,6 +37,16 @@ import cn.stylefeng.roses.kernel.file.api.pojo.props.LocalFileProperties;
*/
public class FileConfigExpander {
/**
* bucket
*
* @author fengshuonan
* @date 2021/6/15 21:54
*/
public static String getDefaultBucket() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_FILE_DEFAULT_BUCKET", String.class, FileConstants.DEFAULT_BUCKET_NAME);
}
/**
* hosthttp://localhost
* <p>

View File

@ -109,4 +109,9 @@ public class SysFileInfoResponse {
*/
private String filePath;
/**
* 访url访url
*/
private String fileUrl;
}

View File

@ -35,6 +35,7 @@ import cn.stylefeng.roses.kernel.file.api.enums.FileLocationEnum;
import cn.stylefeng.roses.kernel.file.api.enums.FileStatusEnum;
import cn.stylefeng.roses.kernel.file.api.exception.FileException;
import cn.stylefeng.roses.kernel.file.api.exception.enums.FileExceptionEnum;
import cn.stylefeng.roses.kernel.file.api.expander.FileConfigExpander;
import cn.stylefeng.roses.kernel.file.api.pojo.request.SysFileInfoRequest;
import cn.stylefeng.roses.kernel.file.modular.entity.SysFileInfo;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@ -43,7 +44,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.math.BigDecimal;
import static cn.stylefeng.roses.kernel.file.api.constants.FileConstants.DEFAULT_BUCKET_NAME;
import static cn.stylefeng.roses.kernel.file.api.constants.FileConstants.FILE_POSTFIX_SEPARATOR;
/**
@ -80,7 +80,7 @@ public class FileInfoFactory {
String finalFileName = fileId + FILE_POSTFIX_SEPARATOR + fileSuffix;
// 桶名
String fileBucket = DEFAULT_BUCKET_NAME;
String fileBucket = FileConfigExpander.getDefaultBucket();
// 存储文件
byte[] bytes;

View File

@ -76,7 +76,6 @@ import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import static cn.stylefeng.roses.kernel.file.api.constants.FileConstants.DEFAULT_BUCKET_NAME;
import static cn.stylefeng.roses.kernel.file.api.constants.FileConstants.FILE_POSTFIX_SEPARATOR;
import static cn.stylefeng.roses.kernel.file.api.exception.enums.FileExceptionEnum.FILE_NOT_FOUND;
@ -104,7 +103,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
// 获取文件字节码
byte[] fileBytes;
try {
fileBytes = fileOperatorApi.getFileBytes(DEFAULT_BUCKET_NAME, sysFileInfo.getFileObjectName());
fileBytes = fileOperatorApi.getFileBytes(FileConfigExpander.getDefaultBucket(), sysFileInfo.getFileObjectName());
} catch (Exception e) {
log.error("获取文件流异常,具体信息为:{}", e.getMessage());
throw new FileException(FileExceptionEnum.FILE_STREAM_ERROR, e.getMessage());
@ -137,6 +136,16 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
// 返回文件信息体
SysFileInfoResponse fileUploadInfoResult = new SysFileInfoResponse();
BeanUtil.copyProperties(sysFileInfo, fileUploadInfoResult);
// 拼接文件可直接访问的url
String fileAuthUrl;
if (YesOrNotEnum.Y.getCode().equals(sysFileInfoRequest.getSecretFlag())) {
fileAuthUrl = fileOperatorApi.getFileAuthUrl(sysFileInfo.getFileBucket(), sysFileInfo.getFileObjectName(), FileConfigExpander.getDefaultFileTimeoutSeconds() * 1000);
} else {
fileAuthUrl = fileOperatorApi.getFileUnAuthUrl(sysFileInfo.getFileBucket(), sysFileInfo.getFileObjectName());
}
fileUploadInfoResult.setFileUrl(fileAuthUrl);
return fileUploadInfoResult;
}
@ -222,6 +231,12 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
List<Long> fileIdList = Arrays.stream(fileIds.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
List<SysFileInfoResponse> fileInfoResponseList = this.getFileInfoListByFileIds(fileIdList);
// 获取bucket名称
String bucketName = FileConfigExpander.getDefaultBucket();
if (ObjectUtil.isNotEmpty(fileInfoResponseList)) {
bucketName = fileInfoResponseList.get(0).getFileBucket();
}
// 输出流等信息
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(bos);
@ -236,7 +251,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
throw new FileException(FileExceptionEnum.SECRET_FLAG_INFO_ERROR, fileOriginName);
}
byte[] fileBytes = fileOperatorApi.getFileBytes(DEFAULT_BUCKET_NAME, sysFileInfoResponse.getFileObjectName());
byte[] fileBytes = fileOperatorApi.getFileBytes(bucketName, sysFileInfoResponse.getFileObjectName());
ZipEntry entry = new ZipEntry(i + 1 + "." + fileOriginName);
entry.setSize(fileBytes.length);
zip.putNextEntry(entry);

View File

@ -25,11 +25,11 @@
package cn.stylefeng.roses.kernel.file.aliyun;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.file.api.FileOperatorApi;
import cn.stylefeng.roses.kernel.file.api.enums.BucketAuthEnum;
import cn.stylefeng.roses.kernel.file.api.exception.FileException;
import cn.stylefeng.roses.kernel.file.api.exception.enums.FileExceptionEnum;
import cn.stylefeng.roses.kernel.file.api.expander.FileConfigExpander;
import cn.stylefeng.roses.kernel.file.api.pojo.props.AliyunOssProperties;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
@ -200,7 +200,8 @@ public class AliyunFileOperator implements FileOperatorApi {
@Override
public String getFileUnAuthUrl(String bucketName, String key) {
return this.getFileAuthUrl(bucketName, key, FileConfigExpander.getDefaultFileTimeoutSeconds() * 1000);
String template = "https://{}.oss-cn-beijing.aliyuncs.com/{}";
return StrUtil.format(template,bucketName,key);
}
@Override