From 77f99800075afbfe398d1e9b8b567407ff9f539b Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期三, 06 三月 2024 17:36:30 +0800 Subject: [PATCH] minio文件上传实现 --- dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java | 50 ++++ dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java | 15 + dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java | 95 ++++++++ dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java | 27 ++ dujy-modules/dujy-demo/pom.xml | 2 dujy-admin/src/main/resources/application-dev.yml | 7 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java | 22 ++ dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java | 314 ++++++++-------------------- dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java | 43 +++ dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java | 68 ++++++ dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java | 14 + 11 files changed, 426 insertions(+), 231 deletions(-) diff --git a/dujy-admin/src/main/resources/application-dev.yml b/dujy-admin/src/main/resources/application-dev.yml index c8a4d27..3215e6e 100644 --- a/dujy-admin/src/main/resources/application-dev.yml +++ b/dujy-admin/src/main/resources/application-dev.yml @@ -278,7 +278,6 @@ client-secret: 1f7d08**********5b7**********29e redirect-uri: ${justauth.address}/social-callback?source=gitlab minio: - endpoint: http://127.0.0.1:9000 - accessKey: UqCoWBRAVf7DI1gcznSg - secretKey: UL4hmEIcgFpTmSaJEpYTiQDIWHEG4RavPxTyMjgX - bucketName: dujyimage + url: http://127.0.0.1:9000 + access-key: root + secret-key: root1234 diff --git a/dujy-modules/dujy-demo/pom.xml b/dujy-modules/dujy-demo/pom.xml index e85885e..e0ad3dd 100644 --- a/dujy-modules/dujy-demo/pom.xml +++ b/dujy-modules/dujy-demo/pom.xml @@ -127,7 +127,7 @@ <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> - <version>8.4.3</version> + <version>7.0.2</version> </dependency> diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java new file mode 100644 index 0000000..70a28a0 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java @@ -0,0 +1,50 @@ +package org.dromara.demo.controller; + +import org.dromara.demo.domain.MinioResult; +import org.dromara.demo.domain.dto.FileDTO; +import org.dromara.demo.domain.dto.MinioVideoResult; +import org.dromara.demo.domain.dto.Result; +import org.dromara.demo.util.MinioUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Objects; + +/** + * @author Satori + * @date 2021/10/15 + */ +@RestController +@RequestMapping("/api/v1/file") +public class FileController { + + @Autowired + private MinioUtil client; + + @PostMapping("/upload/image") + public Result upload(MultipartFile file) { + MinioResult result = client.uploadFile(file, "image"); + return Result.success(result); + } + + @PostMapping("/upload/document") + public Result publicUpload(MultipartFile file, FileDTO fileDTO) { + MinioResult result = client.uploadFile(file, "document"); + if (Objects.nonNull(fileDTO.getFileContentType())) { + result.setFileContentType(fileDTO.getFileContentType()); + } + return Result.success(result); + } + + @PostMapping("/upload/video") + public Result videoUpload(MultipartFile file) { + MinioVideoResult minioVideoResult = new MinioVideoResult(); + MinioResult result = client.uploadFile(file, "video"); + minioVideoResult.setVideoUrl(result.getUrl()); + minioVideoResult.setRealName(file.getOriginalFilename()); + return Result.success(minioVideoResult); + } +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java new file mode 100644 index 0000000..13b4399 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java @@ -0,0 +1,27 @@ +package org.dromara.demo.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author gonghl + * @date 2024-3-6 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor + +public class MinioResult { + + public MinioResult(String url) { + this.url = url; + } + + private String bucketName; + private String fileName; + private String url; + private String realName; + private String fileContentType; + +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java new file mode 100644 index 0000000..049b8c2 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java @@ -0,0 +1,43 @@ +package org.dromara.demo.domain.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author zhangliang + * @version 1.0 + * @date 2021/12/23 15:24 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class FileDTO { + + private static final long serialVersionUID = 7047764513709611598L; + + private String fileId; + /** + * 缁戝畾鏁版嵁鐨刬d + */ + private String dataId; + + /** + * 鍦板潃 + */ + private String location; + + /** + * 鏂囦欢鍚嶇О + */ + private String fileName; + + + private String fileSize; + + private String fileContentType; + + private Integer deleted; +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java new file mode 100644 index 0000000..63cd404 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java @@ -0,0 +1,15 @@ +package org.dromara.demo.domain.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MinioVideoResult { + private String coverUrl; + private String videoUrl; + private String realName; + private String videoTime; +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java new file mode 100644 index 0000000..7a2e798 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java @@ -0,0 +1,95 @@ +package org.dromara.demo.domain.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author Satori + * @date 2020/11/12 17:29 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@Accessors(chain = true) +public class Result<T> { + + private Integer code; + + private String message; + + private T result; + + private Integer userId; + + private String token; + + + /** + * 榛樿 + * + * @param result + * @param resultCode + */ + private Result(T result, ResultCode resultCode) { + this.result = result; + this.code = resultCode.getCode(); + this.message = resultCode.getMessage(); + } + + private Result(T result, Integer code, String message) { + this.result = result; + this.code = code; + this.message = message; + } + + + private Result(ResultCode resultCode) { + this.result = null; + this.code = resultCode.getCode(); + this.message = resultCode.getMessage(); + } + + + private Result(boolean code) { + if (code) { + this.result = null; + this.code = ResultCode.SUCCESS.getCode(); + this.message = ResultCode.SUCCESS.getMessage(); + } else { + this.result = null; + this.code = ResultCode.SYSTEM_ERROR.getCode(); + this.message = ResultCode.SYSTEM_ERROR.getMessage(); + } + } + + + public static <T> Result<T> success(T data) { + return new Result<T>(data, ResultCode.SUCCESS); + } + + public static <T> Result<T> success(T data, String message) { + return new Result(data, ResultCode.SUCCESS.getCode(), message); + } + + public static Result success() { + return new Result<>(true); + } + + + + public static Result error() { + return new Result(ResultCode.SYSTEM_ERROR); + } + + + public static <T> Result<T> error(String errorMessage, Integer errorCode) { + return new Result<T>(true).setMessage(errorMessage).setCode(errorCode); + } + + + public static <T> Result<T> error(ResultCode resultCode) { + return new Result<T>(null, resultCode); + } + + +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java new file mode 100644 index 0000000..e561abb --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java @@ -0,0 +1,68 @@ +package org.dromara.demo.domain.dto; + + +/** + * @author Satori + * @date 2021/5/11 + */ +public enum ResultCode { + SUCCESS(200, "璇锋眰鎴愬姛"), + SYSTEM_ERROR(500, "绯荤粺閿欒"), + UNKNOWN_REQUEST(404, "鏈煡璇锋眰,璇锋牳瀵瑰悗鍐嶉噸璇�!"), + PARAM_IS_INVALID(1000, "鍙傛暟閿欒"), + USER_IS_EXISTED(1001, "鐢ㄦ埛宸插瓨鍦�"), + USER_NOT_EXIST(1002, "鐢ㄦ埛涓嶅瓨鍦�"), + LOGIN_EXCEPTION(1003, "瀵嗙爜鎴栬处鎴峰悕閿欒"), + USER_BANNED(1004, "鐢ㄦ埛褰撳墠涓嶅彲鐢�"), + TOKEN_EXPIRE(1005, "鐧诲綍宸插け鏁�"), + EMAIL_EXIST(1006, "閭宸茶娉ㄥ唽"), + EMAIL_NO_BINDING(1008, "褰撳墠閭鏈粦瀹氫换浣曡处鎴�"), + NO_DEFAULT_SYS_EMAIL(1009, "褰撳墠绯荤粺鏈缃偖绠�,璇疯仈绯荤鐞嗗憳璁剧疆"), + PASSWORD_RESET_PAGE_EXPIRE(1010, "褰撳墠閲嶇疆瀵嗙爜椤甸潰宸茶繃鏈�"), + CAPTCHA_ERROR_EXCEPTION(1011, "楠岃瘉鐮侀敊璇�"), + MENU_HAS_CHILDREN(1012, "褰撳墠鑿滃崟杩樻湁瀛愯彍鍗�,鏃犳硶鍒犻櫎"), + UPLOAD_FAIL_EXCEPTION(1013, "涓婁紶澶辫触,璇疯仈绯荤鐞嗗憳鎴栨煡鐪嬮敊璇棩蹇�"), + PERMISSION_HAS_CHILDREN(1014, "褰撳墠鑿滃崟杩樻湁瀛愯彍鍗�,鏃犳硶鍒犻櫎"), + IMG_NOT_EXISTS(1015,"鍥剧墖涓嶈兘涓虹┖"), + TEMPLATE_IS_EXISTED(1016,"妯℃澘宸插瓨鍦�"), + NAME_IS_EXISTED(1017,"鍚嶅瓧宸插瓨鍦�"), + REST_PASS_EXCEPTION(1018,"瀵嗙爜閿欒"), + REST_PASS_ATYPISM(1019,"涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�"); + + + private Integer code; + private String message; + + + public static ResultCode getByCode(Integer code) { + for (ResultCode value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + public static ResultCode getByMessage(String message) { + for (ResultCode value : values()) { + if (value.getMessage().equals(message)) { + return value; + } + } + return null; + } + + + ResultCode(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java new file mode 100644 index 0000000..f525156 --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java @@ -0,0 +1,22 @@ +package org.dromara.demo.exception; + +import lombok.Getter; +import org.dromara.demo.domain.dto.ResultCode; + +/** + * @author Satori + * @date 2021/5/11 + */ + +public class BaseException extends RuntimeException { + + @Getter + protected ResultCode resultCode; + + public BaseException(ResultCode resultCode) { + super(resultCode.getMessage()); + this.resultCode = resultCode; + + } + +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java new file mode 100644 index 0000000..49be40e --- /dev/null +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java @@ -0,0 +1,14 @@ +package org.dromara.demo.exception; + + +import org.dromara.demo.domain.dto.ResultCode; + +/** + * @author Satori + * @date 2021/10/15 + */ +public class UploadFailException extends BaseException { + public UploadFailException() { + super(ResultCode.UNKNOWN_REQUEST); + } +} diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java index 079ef7f..b761b2a 100644 --- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java +++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java @@ -1,266 +1,128 @@ package org.dromara.demo.util; -import io.minio.*; -import io.minio.messages.DeleteError; -import io.minio.messages.DeleteObject; -import io.minio.messages.Item; -import jakarta.servlet.ServletOutputStream; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.compress.utils.IOUtils; -import org.dromara.common.core.utils.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; +import cn.hutool.core.util.IdUtil; +import io.minio.MinioClient; +import io.minio.PutObjectOptions; +import jakarta.annotation.PostConstruct; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.dromara.demo.domain.MinioResult; +import org.dromara.demo.exception.UploadFailException; +import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; +import java.io.ByteArrayInputStream; /** - * @description锛� minio宸ュ叿绫� - * @version + * @author gonghl + * @date 2024-3-6 */ @Component +@ConfigurationProperties(prefix = "minio") +@Slf4j +@Data public class MinioUtil { - @Autowired - private MinioClient minioClient; - @Value("${minio.bucketName}") - private String bucketName; - /** - * description: 鍒ゆ柇bucket鏄惁瀛樺湪锛屼笉瀛樺湪鍒欏垱寤� - * - * @return: void - */ - public void existBucket(String name) { + + private String url; + private String accessKey; + private String secretKey; + private MinioClient client; + + + public MinioResult uploadFile(MultipartFile file, String bucketName) { try { - boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build()); - if (!exists) { - minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build()); + if (!client.bucketExists(bucketName)) { + client.makeBucket(bucketName); + client.setBucketPolicy(bucketName, "public"); + } + + String[] split = file.getOriginalFilename().split("\\."); + String suffix = split[split.length - 1]; + + if (split.length < 2) { + suffix = ""; + } + + String fileName = StringUtils.join(IdUtil.randomUUID(), ".", suffix); + + client.putObject(bucketName, fileName, file.getInputStream(), new PutObjectOptions(file.getSize(), 5 * 1024 * 1024)); + String fileUrl = getFilePath(bucketName, fileName); + if (StringUtils.isNotBlank(fileUrl)) { + return new MinioResult(bucketName, fileName, fileUrl, file.getOriginalFilename(), null); } } catch (Exception e) { - e.printStackTrace(); + log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage()); + throw new UploadFailException(); } + return null; + } - /** - * 鍒涘缓瀛樺偍bucket - * @param bucketName 瀛樺偍bucket鍚嶇О - * @return Boolean - */ - public Boolean makeBucket(String bucketName) { + public MinioResult uploadFile(ByteArrayInputStream in, String name, String bucketName) { + + String[] split = name.split("\\."); + String suffix = split[split.length - 1]; + if (split.length < 2) { + suffix = ""; + } + String fileName = StringUtils.join(IdUtil.randomUUID(), ".", suffix); try { - minioClient.makeBucket(MakeBucketArgs.builder() - .bucket(bucketName) - .build()); + client.putObject(bucketName, fileName, in, new PutObjectOptions(in.available(), 5 * 1024 * 1024)); + String fileUrl = getFilePath(bucketName, fileName); + if (StringUtils.isNotBlank(fileUrl)) { + return new MinioResult(bucketName, fileName, fileUrl, name, null); + } } catch (Exception e) { - e.printStackTrace(); - return false; + log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage()); + throw new UploadFailException(); } - return true; + + return null; + } - /** - * 鍒犻櫎瀛樺偍bucket - * @param bucketName 瀛樺偍bucket鍚嶇О - * @return Boolean - */ - public Boolean removeBucket(String bucketName) { + public String uploadImage(ByteArrayInputStream in, String bucketName) { try { - minioClient.removeBucket(RemoveBucketArgs.builder() - .bucket(bucketName) - .build()); + String fileName = IdUtil.randomUUID() + ".jpg"; + client.putObject(bucketName, fileName, in, new PutObjectOptions(in.available(), 5 * 1024 * 1024)); + String fileUrl = getFilePath(bucketName, fileName); + if (StringUtils.isNotBlank(fileUrl)) { + return fileUrl; + } } catch (Exception e) { - e.printStackTrace(); - return false; + log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage()); + throw new UploadFailException(); } - return true; - } - /** - * description: 涓婁紶鏂囦欢 - * - * @param multipartFile - * @return: java.lang.String - */ - public List<String> uploads(MultipartFile[] multipartFile) { - List<String> names = new ArrayList<>(multipartFile.length); - for (MultipartFile file : multipartFile) { - String fileName = file.getOriginalFilename(); - String[] split = fileName.split("\\."); - if (split.length > 1) { - fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1]; - } else { - fileName = fileName + System.currentTimeMillis(); - } - InputStream in = null; - try { - in = file.getInputStream(); - minioClient.putObject(PutObjectArgs.builder() - .bucket(bucketName) - .object(fileName) - .stream(in, in.available(), -1) - .contentType(file.getContentType()) - .build() - ); - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - names.add(fileName); - } - return names; + return null; + } - /** - * 涓婁紶鍗曚釜鏂囦欢 - * @param multipartFile - * @return - */ - public String upload(MultipartFile multipartFile) { - - String fileName = multipartFile.getOriginalFilename(); - String[] split = fileName.split("\\."); - if (split.length > 1) { - fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1]; - } else { - fileName = fileName + System.currentTimeMillis(); - } - InputStream in = null; - try { - in = multipartFile.getInputStream(); - minioClient.putObject(PutObjectArgs.builder() - .bucket(bucketName) - .object(fileName) - .stream(in, in.available(), -1) - .contentType(multipartFile.getContentType()) - .build() - ); - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return fileName; - } - - /** - * description: 涓嬭浇鏂囦欢 - * - * @param fileName - * @return: org.springframework.http.ResponseEntity<byte [ ]> - */ - public ResponseEntity<byte[]> download(String fileName) { - ResponseEntity<byte[]> responseEntity = null; - InputStream in = null; - ByteArrayOutputStream out = null; + public String getFilePath(String bucketName, String fileName) { + String wordUrl = null; try { - in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); - out = new ByteArrayOutputStream(); - IOUtils.copy(in, out); - //灏佽杩斿洖鍊� - byte[] bytes = out.toByteArray(); - HttpHeaders headers = new HttpHeaders(); - try { - headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); + if (client.getObject(bucketName, fileName) == null) { + return null; } - headers.setContentLength(bytes.length); - headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); - headers.setAccessControlExposeHeaders(Arrays.asList("*")); - responseEntity = new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK); + + return StringUtils.join("/", bucketName, "/", fileName); } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } + log.error("鑾峰彇bucket涓�:{},鏂囦欢鍚嶄负{}鏃跺嚭閿�,鍘熷洜:{}", bucketName, fileName, e.getMessage()); } - return responseEntity; - } - /** - * 涓嬭浇鏂囦欢 - * - * @param originalName 鏂囦欢璺緞 - */ - public InputStream downloadFile(String originalName, HttpServletResponse response) { - try { - - InputStream file = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(originalName).build()); - String filename = new String(originalName.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); - if (StringUtils.isNotBlank(originalName)) { - filename = originalName; - } - response.setHeader("Content-Disposition", "attachment;filename=" + filename); - ServletOutputStream servletOutputStream = response.getOutputStream(); - int len; - byte[] buffer = new byte[1024]; - while ((len = file.read(buffer)) > 0) { - servletOutputStream.write(buffer, 0, len); - } - servletOutputStream.flush(); - file.close(); - servletOutputStream.close(); - return file; - } catch (Exception e) { - e.printStackTrace(); - return null; - } + return null; } - /** - * 鎵归噺鍒犻櫎鏂囦欢瀵硅薄 - * @param bucketName 瀛樺偍bucket鍚嶇О - * @param objects 瀵硅薄鍚嶇О闆嗗悎 - */ - public Iterable<Result<DeleteError>> removeObjects(String bucketName, List<String> objects) { - List<DeleteObject> dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); - Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(dos).build()); - return results; - } + @PostConstruct + public void creatConnect() throws Exception { + this.client = new MinioClient(url, accessKey, secretKey); + + } } - - -- Gitblit v1.8.0