
目录
https://dl.min.io/server/minio/release/linux-amd64/minio
需要翻墙,可以先在本地下载,然后上传到服务器。
- mkdir /opt/minio
- mkdir /opt/minio/data
将下载好的minio文件上传到minio目录下。
进入miniomulu
chmod +x minio
nohup /opt/minio server --address 0.0.0.0:9000 /opt/minio/data > /opt/minio/minio.log 2>&1 &
如果用的是其他目录,则需要更改一下上面启动命令,将启动命令中的目录改为你自己的目录。
注意开启9000和9001端口号。
http://localhost:9000/
服务器ip+端口
账号密码都是:minioadmin

需要本地访问的话需要改为public,不然会没有权限查看上传文件

yml配置
- # minio 参数配置
- minio:
- endpoint: http://xxx:9000
- accessKey: minioadmin
- secretKey: minioadmin
- bucketName: test
逻辑
- @Autowired
- private MinIoClientConfig minIoClientConfig;
-
- @Autowired
- private MinioClient minioClient;
- @Override
- public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
- String url=minIoClientConfig.getEndpoint();
- String bucketName="test";
- //获取文件名称
- String originalFilename = file.getOriginalFilename();
- //获取文件的类型
- //使用当前时间重新生成文件名,防止文件名称重复造成文件覆盖
- Date d = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- String fileNewName = System.currentTimeMillis() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- String fileName = sdf.format(d) + "&&" + fileNewName;
- //4.构建文件上传路径
- String filePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
- //5.文件上传的路径
- String uploadUrl=filePath+"/"+fileName;
- //6.开始上传
- InputStream inputStream=null;
- try {
- inputStream=file.getInputStream();
- } catch (IOException e) {
- e.printStackTrace();
- }
- PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .object(uploadUrl)
- .contentType("image/jpeg")
- .bucket(bucketName)
- .stream(inputStream, inputStream.available(), -1)
- .build();
-
- minioClient.putObject(putObjectArgs);
-
- return DataResult.success(url+"/"+bucketName+"/"+uploadUrl);
- }
- @PostMapping("/upload")
- public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
- if(file==null||file.isEmpty()||file.getSize()==0){
- return DataResult.error(ResponseCode.FILE_IS_NOT_NULL.getMsg());
- }
- return userService.uploadImg(file);
- }
之后调用接口的时候会直接返回一个路径,用那个路径就可以访问到自己上传的那个文件了。
代码中还有一个问题,就是我使用@Value来调用yml中已经配置好了的bucketName, 但是却调用不成功,所以我是直接在逻辑代码处赋值桶的名字的。
关于minio其他查询桶,删除桶等功能可以参考:【精选】分布式文件存储系统minio_minio数据库-CSDN博客