ソースを参照

文件上传服务

master
qiubh 1週間前
コミット
28666604ec
1個のファイルの変更15行の追加9行の削除
  1. 15
    9
      src/main/java/com/taiji/system/oss/MinIoTemplate.java

+ 15
- 9
src/main/java/com/taiji/system/oss/MinIoTemplate.java ファイルの表示

* @return OssFile * @return OssFile
*/ */
public OssFile putObject(MultipartFile file, String bucketName, String originalFileName, boolean deduplication, String busCode) { public OssFile putObject(MultipartFile file, String bucketName, String originalFileName, boolean deduplication, String busCode) {
if (!StringUtils.hasLength(bucketName)) {
bucketName = ossProperties.getDefaultBucketName();
List<String> allowedExtensions = List.of("jpg", "jpeg", "png", "gif", "doc", "docx", "pdf", "csv", "xls", "xlsx");
String fileExtension = originalFileName.substring(originalFileName.lastIndexOf(".") + 1);
if (!allowedExtensions.contains(fileExtension)) {
throw new GlobalException("文件类型错误");
} }
String uuidFileName = deduplication ? generateOssUuidFileName(bucketName, originalFileName, busCode) : generateOssFileName(bucketName, originalFileName, busCode);
String uuidFileName = deduplication ? generateOssUuidFileName(originalFileName, busCode) : generateOssFileName(originalFileName, busCode);
try { try {
if (!StringUtils.hasLength(bucketName)) {
bucketName = ossProperties.getDefaultBucketName();
}
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
minioClient.putObject(PutObjectArgs.builder() minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName) .bucket(bucketName)
.stream(inputStream, inputStream.available(), -1) .stream(inputStream, inputStream.available(), -1)
.contentType(MinIoContentType.getContentType(originalFileName.substring(originalFileName.lastIndexOf(".")))) .contentType(MinIoContentType.getContentType(originalFileName.substring(originalFileName.lastIndexOf("."))))
.build()); .build());
return new OssFile(uuidFileName, originalFileName);
return new OssFile(bucketName + StrUtil.SLASH + uuidFileName, originalFileName);
} catch (Exception e) { } catch (Exception e) {
log.error("MinIo 上传文件失败...{}", e.getMessage()); log.error("MinIo 上传文件失败...{}", e.getMessage());
throw new GlobalException("MinIo 上传文件失败...请联系管理员"); throw new GlobalException("MinIo 上传文件失败...请联系管理员");
} }
ChannelModel data = imodel.getData(); ChannelModel data = imodel.getData();
MinioClient minioClient = minioBuild(data); MinioClient minioClient = minioBuild(data);
String uuidFileName = deduplication ? generateOssUuidFileName("agent-issues", originalFileName, "") : generateOssFileName("agent-issues", originalFileName,"");
String uuidFileName = deduplication ? generateOssUuidFileName(originalFileName, "") : generateOssFileName(originalFileName,"");
try { try {
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
minioClient.putObject(PutObjectArgs.builder() minioClient.putObject(PutObjectArgs.builder()
* @param originalFilename 原始文件名 * @param originalFilename 原始文件名
* @return 、 * @return 、
*/ */
public String generateOssUuidFileName(String bucketName, String originalFilename, String busCode) {
public String generateOssUuidFileName(String originalFilename, String busCode) {
// 原始文件名前加 24位uuid + "_" // 原始文件名前加 24位uuid + "_"
String uuid = UUID.randomUUID().toString().replace("-", "").substring(0, 24); String uuid = UUID.randomUUID().toString().replace("-", "").substring(0, 24);
if (!StringUtils.hasLength(busCode)) if (!StringUtils.hasLength(busCode))
* @param originalFilename 原始文件名 * @param originalFilename 原始文件名
* @return 、 * @return 、
*/ */
public String generateOssFileName(String bucketName, String originalFilename, String busCode) {
public String generateOssFileName(String originalFilename, String busCode) {
// 原始文件名前加 24位uuid + "_" // 原始文件名前加 24位uuid + "_"
if (!StringUtils.hasLength(busCode)) if (!StringUtils.hasLength(busCode))
return bucketName + StrUtil.SLASH + DateUtil.format(new Date(), "yyyyMMdd") + StrUtil.SLASH + originalFilename;
return DateUtil.format(new Date(), "yyyyMMdd") + StrUtil.SLASH + originalFilename;
else else
return bucketName + StrUtil.SLASH + DateUtil.format(new Date(), "yyyyMMdd") + StrUtil.SLASH + busCode + StrUtil.SLASH + originalFilename;
return DateUtil.format(new Date(), "yyyyMMdd") + StrUtil.SLASH + busCode + StrUtil.SLASH + originalFilename;
} }


/** /**


return multipartFile; return multipartFile;
} }

} }

読み込み中…
キャンセル
保存