| | |
| | | package com.ruoyi.device.hiksdk.util.minio; |
| | | |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.device.hiksdk.config.MinioClientSingleton; |
| | | import io.minio.*; |
| | | import io.minio.http.Method; |
| | |
| | | import io.minio.messages.Item; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.*; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | } |
| | | boolean exsit = exitsBucket(bucketName); |
| | | if (!exsit) { |
| | | log.error(bucketName + "-桶不存在"); |
| | | boolean bucket = createBucket(bucketName); |
| | | if (bucket) { |
| | | log.info(bucketName + "-桶不存在,成功创建桶"); |
| | | } |
| | | } |
| | | //文件名 |
| | | String originalFilename = file.getOriginalFilename(); |
| | | //新的文件名 |
| | | String fileName = UUID.randomUUID().toString().replace("-", "") + originalFilename; |
| | | String fileName = IdUtils.fastSimpleUUID() + "_" + originalFilename; |
| | | try { |
| | | InputStream inputStream = file.getInputStream(); |
| | | /*上传对象*/ |
| | |
| | | .builder() |
| | | .bucket(bucketName) |
| | | .object(fileName) |
| | | .method(Method.GET) |
| | | .build(); |
| | | return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); |
| | | String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); |
| | | String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); |
| | | return ObjectUrl; |
| | | } catch (Exception ex) { |
| | | log.error("上传对象返回url异常:" + ex.getMessage()); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * @描述 上传MultipartFile文件返回url |
| | | * @参数 [bucketName, file] |
| | | * @返回值 java.lang.String |
| | | * @创建人 刘苏义 |
| | | * @创建时间 2023/5/18 12:16 |
| | | * @修改人和其它信息 |
| | | */ |
| | | public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { |
| | | //判断文件是否为空 |
| | | if (null == file || 0 == file.getSize()) { |
| | | log.error("上传minio文件服务器错误,上传文件为空"); |
| | | } |
| | | boolean exsit = exitsBucket(bucketName); |
| | | if (!exsit) { |
| | | boolean bucket = createBucket(bucketName); |
| | | if (bucket) { |
| | | log.info(bucketName + "-桶不存在,成功创建桶"); |
| | | } |
| | | } |
| | | //文件名 |
| | | String originalFilename = file.getOriginalFilename(); |
| | | //新的文件名 |
| | | String fileName = folder + "/" + IdUtils.fastSimpleUUID() + "_" + originalFilename; |
| | | try { |
| | | InputStream inputStream = file.getInputStream(); |
| | | /*上传对象*/ |
| | | PutObjectArgs putObjectArgs = PutObjectArgs |
| | | .builder() |
| | | .bucket(bucketName) |
| | | .object(fileName) |
| | | .stream(inputStream, file.getSize(), -1) |
| | | .contentType(file.getContentType()) |
| | | .build(); |
| | | MinioClientSingleton.getMinioClient().putObject(putObjectArgs); |
| | | inputStream.close(); |
| | | /*获取url*/ |
| | | GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs |
| | | .builder() |
| | | .bucket(bucketName) |
| | | .object(fileName) |
| | | .method(Method.GET) |
| | | .build(); |
| | | String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); |
| | | String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); |
| | | return ObjectUrl; |
| | | } catch (Exception ex) { |
| | | log.error("上传对象返回url异常:" + ex.getMessage()); |
| | | } |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | *@描述 获取桶中所有对象 |
| | | *@参数 [bucketName] |
| | | *@返回值 java.lang.Iterable<io.minio.Result<io.minio.messages.Item>> |
| | | *@创建人 刘苏义 |
| | | *@创建时间 2023/2/6 10:32 |
| | | *@修改人和其它信息 |
| | | * @描述 获取桶中所有对象 |
| | | * @参数 [bucketName] |
| | | * @返回值 java.lang.Iterable<io.minio.Result < io.minio.messages.Item>> |
| | | * @创建人 刘苏义 |
| | | * @创建时间 2023/2/6 10:32 |
| | | * @修改人和其它信息 |
| | | */ |
| | | public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { |
| | | public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { |
| | | Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder() |
| | | .bucket(bucketName) |
| | | .recursive(true) |