SpringBoot集成minio實現(xiàn)文件上傳和刪除功能
1.加入依賴
<!-- 對象存儲 Minio --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> </dependency>
2.yml配置
minio: endpoint: http://ip:9000 accessKey: accessKey secretKey: secretKey bucketName: bucketName
3.配置類
@Configuration public class MinioConfig { @Autowired private MinioProperties minioProperties; @Bean public MinioClient minioClient() { return MinioClient.builder() .endpoint(minioProperties.getEndpoint()) .credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey()) .build(); } }
4.屬性配置類
@ConfigurationProperties(prefix = "minio") @Component @Data public class MinioProperties { private String endpoint; private String accessKey; private String secretKey; private String bucketName; }
5.工具類:示例文件上傳和刪除
@Component @Slf4j public class MinioUtil { @Autowired private MinioProperties minioProperties; @Autowired private MinioClient minioClient; public String uploadFile(MultipartFile file, String bucketName) throws Exception { if (file == null || file.getSize() == 0) { log.error("==> 上傳文件異常:文件大小為空 ..."); throw new RuntimeException("請選擇需要上傳的文件"); } String originalFileName = file.getOriginalFilename(); String contentType = file.getContentType(); String key = UUID.randomUUID().toString().replace("-", ""); String suffix = originalFileName.substring(originalFileName.lastIndexOf(".")); String objectName = String.format("%s%s", key, suffix); log.info("==> 開始上傳文件至 Minio, ObjectName: {}", objectName); minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(contentType) .build()); String url = String.format("%s/%s/%s", minioProperties.getEndpoint(), bucketName, objectName); log.info("==> 上傳文件至 Minio 成功,訪問路徑: {}", url); return url; } //刪除文件: public boolean remove(String bucketName, String fileName) { /** * String bucketName = "test2"; * String fileName = "/2023-04-07/16808560218465670_img.png"; * address+bucketName+fileName 就是訪問路徑,刪除需要后兩個參數(shù)。 */ try { minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build()); } catch (Exception e) { e.printStackTrace(); log.error("文件刪除失敗"); return false; } log.info("刪除成功"); return true; } }
6.文件上傳示例
public R uploadFile(MultipartFile file) { try { String fileName = file.getOriginalFilename(); String url = minioUtil.uploadFile(file, bucketName); if (StringUtils.isNotEmpty(url)) { File fileEntity = new File(); fileEntity.setBucketName(bucketName); fileEntity.setFileName(fileName); fileEntity.setMinioFileName(getMinioFileName(url)); fileEntity.setFilePath(url); fileEntity.setCreateBy(LoginUtils.getUsername()); fileEntity.setCreateTime(new Date()); fileMapper.insert(fileEntity); } return R.ok(url); } catch (Exception e) { log.error("==> 上傳文件異常: ", e); return R.fail("文件上傳失敗"); } }
7.文件刪除示例
public R remove(MinioFileDto fileDto) { try { boolean remove = minioUtil.remove(fileDto.getBucketName(), fileDto.getFileName()); if (remove) { //刪除數(shù)據(jù)庫記錄 fileMapper.delete(new LambdaQueryWrapper<File>() .eq(File::getBucketName, fileDto.getBucketName()) .eq(File::getMinioFileName, fileDto.getFileName())); } return R.ok(); } catch (Exception e) { return R.fail("文件刪除失敗"); } }
到此這篇關(guān)于SpringBoot集成minio實現(xiàn)文件上傳和刪除功能的文章就介紹到這了,更多相關(guān)SpringBoot minio文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot3整合EasyExcel動態(tài)實現(xiàn)表頭重命名
這篇文章主要為大家詳細(xì)介紹了SpringBoot3整合EasyExcel如何通過WriteHandler動態(tài)實現(xiàn)表頭重命名,文中的示例代碼講解詳細(xì),有需要的可以了解下2025-03-03Java通過word模板實現(xiàn)創(chuàng)建word文檔報告
這篇文章主要為大家詳細(xì)介紹了Java如何通過word模板實現(xiàn)創(chuàng)建word文檔報告的教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-09-09Spring Cloud Alibaba之Sentinel實現(xiàn)熔斷限流功能
這篇文章主要介紹了Spring Cloud Alibaba之Sentinel,這里使用阿里的sentinel來實現(xiàn)熔斷限流功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04Hikari?數(shù)據(jù)庫連接池內(nèi)部源碼實現(xiàn)的小細(xì)節(jié)
這篇文章主要介紹了Hikari?數(shù)據(jù)庫連接池內(nèi)部源碼實現(xiàn)的小細(xì)節(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Java操作PDF文件實現(xiàn)簽訂電子合同詳細(xì)教程
這篇文章主要介紹了如何在PDF中加入電子簽章與電子簽名的過程,包括編寫Word文件、生成PDF、為PDF格式做表單、為表單賦值、生成文檔以及上傳到OBS中的步驟,需要的朋友可以參考下2025-01-01