文件系统:负责管理和存储文件的系统软件。操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件
minIO:轻量级服务分布式文件系统,适合存储非机构化数据。采用去中心化共享架构,结点之间是对等关系。
端口号为9000,初次登录账号密码都是minioadmin
minIO中使用bucket的概念来分隔管理文件,当然我们也可以在设置object的时候通过2024/7/3/myPic.jpg在bucket中生成对应的文件夹方便文件管理
以下是通过minIO实现的文件管理
这里使用的是很经典的建造者模式,bucket代表你所选择的桶,object代表你要存放在当前桶的具体名称/具体位置,filename则是你要存放在文件在当前磁盘的具体位置。
public class MinIOtest { MinioClient minioClient = MinioClient.builder() .endpoint("http://192.168.101.65:9000") .credentials("minioadmin", "minioadmin") .build(); @Test public void upload() { try { minioClient.uploadObject( UploadObjectArgs.builder() .bucket("test") .object("pic.jpg") .filename("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg") .build() ); } catch (Exception e) { e.printStackTrace(); } } @Test public void delete() { try { minioClient.removeObject( RemoveObjectArgs.builder() .bucket("test") .object("pic.jpg") .build()); } catch (Exception e) { e.printStackTrace(); } } @Test public void search() { try { FilterInputStream test = minioClient.getObject( GetObjectArgs.builder() .bucket("test") .object("pic.jpg") .build() ); // 指定输出流输出 FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg")); IOUtils.copy(test, fileOutputStream); } catch (Exception e) { e.printStackTrace(); } } }
当我们使用springboot接受一个MultipartFile文件时,苦于无法直接传递他的绝对路径以便于后面filename的使用。
我们通过File.createTempFile()来生成一个临时文件,再将上述MultipartFile文件通过transferTo将文件内容传给这个临时文件。这时我们可以把这个临时文件上传给远程minIO以供保存,
下述示例中,我们可以通过absolutePath将文件传递给fileName从而实现图片远程保存。
@ApiOperation("上传文件接口") @RequestMapping(value = "/upload/coursefile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public UploadFileResultDto uploadCoursefile(@RequestPart("filedata")MultipartFile filedata) throws IOException { File tempFile=File.createTempFile("minio", "temp"); filedata.transferTo(tempFile); String absolutePath = tempFile.getAbsolutePath(); return mediaFileService.upload(filedata,absolutePath); }
标签:集成,文件,springboot,bucket,jpg,test,public,minIO From: https://www.cnblogs.com/kun1790051360/p/18280734