Java MinIO文件上传返回访问路径及访问配置

1. MinIO形式文件上传:

首先需要有MinIO服务器,这里略过。

    @PostMapping("file/upload")
    public String MinIOUpload(MultipartFile file) {

        if (file.isEmpty() || file.getSize() == 0) {
            return "文件为空";
        }

        try {
            MinioClient minioClient = new MinioClient("http://***.***.**.**:9000", "****", "******");	//连接

            if (!minioClient.bucketExists("test")) {	//是否存在名为“test”的bucket
                minioClient.makeBucket("test");
            }

            String fileName = file.getOriginalFilename();
            String newName ="pic/"+UUID.randomUUID().toString().replaceAll("-", "")
                    + fileName.substring(fileName.lastIndexOf("."));
                    //新的名称,pic会是bucket下的文件夹

            InputStream inputStream = file.getInputStream();	//获取file的inputStream
            minioClient.putObject("test", newName, inputStream, "application/octet-stream");	//上传
            inputStream.close();
            String url = minioClient.getObjectUrl("test", newName);	//文件访问路径
            return url;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "上传失败";
    }

访问配置

MinIO形式上传的文件也不能直接访问,需要设置bucket的policy策略:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除:

		String objectName = url.replaceAll("http://***.***.**.**:9000/test/", "");

        try {
            MinioClient minioClient = new MinioClient("http://***.***.**.**:9000", "****", "********");
            minioClient.removeObject("test", objectName);

        } catch (Exception e) {
            e.printStackTrace();
        }

2. 传统形式文件上传

    @PostMapping("pic/upload")
    public String picUpload(MultipartFile file) {
    
        if (file.isEmpty() || file.getSize() == 0) {
            return "文件为空";
        }
        
        try {
            String fileUrl = "E:/pic/";
            String fileName = file.getOriginalFilename();
            String newName = UUID.randomUUID().toString().replaceAll("-", "")
                    + fileName.substring(fileName.lastIndexOf("."));	//生成新的Name
            File dest = new File(fileUrl + newName);
            if (!dest.getParentFile().exists()) {	//判断本地路径是否存在
                dest.getParentFile().mkdirs();
            }
            file.transferTo(dest); // 保存文件
            return "/pic/view/" + newName;	//这里是虚拟路径
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败";	
        }
    }

访问

传统形式上传的文件不能通过本地路径访问,需要设置虚拟路径(SpringBoot项目虚拟路径设置),设置之后就可以通过虚拟路径访问了。

删除:

            String name = url.substring(url.lastIndexOf("/")+1);
            url = "E:/pic/" + name;
            File file = new File(url);
            file.delete();
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值