文档服务器minio的使用 java

来来来,代码先走一波

pom.xml依赖

<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>3.0.10</version>
</dependency>

application.yml配置文件

#minio文件服务器配置
minio:
  url: http://127.0.0.1:9000 // 服务器地址
  access: minioadmin // 账号
  secret: minioadmin // 密码

java代码


 @Value("${minio.url}")
 private String url;

 @Value("${minio.access}")
 private String access;

 @Value("${minio.secret}")
 private String secret;

 /**
     * 文件上传
     * @param file
     * @return
     */
    @RequestMapping("/uploadFile")
    @ResponseBody
    public JSONObject uploadFile(MultipartFile file) {
        JSONObject jsonObject = new JSONObject();
        try {
            // 参数为:地址,账号,密码
            MinioClient minioClient = new MinioClient(url, access, secret);
            // 检查文件夹是否已经存在
            boolean isExist = minioClient.bucketExists("bucketName");
            if(!isExist) {
                // 创建一个名为bucketName的文件夹
                minioClient.makeBucket("bucketName");
                //设置桶的策略
                minioClient.setBucketPolicy("bucketName", "*.*", PolicyType.READ_WRITE);
            }
            InputStream is = file.getInputStream(); //得到文件流
            String fileName = "/" +file.getOriginalFilename(); //文件名
            String contentType = file.getContentType();  //类型
            // 使用putObject上传一个文件到文件夹中。
            //参数为:文件夹,要存成的名字,要存的文件
            minioClient.putObject("bucketName", fileName, is, contentType);
            String url = minioClient.getObjectUrl("bucketName", fileName);
            jsonObject.put("fileUrl", url);
            jsonObject.put("code", 200);
        } catch (Exception e){
            jsonObject.put("code", 404);
        }
        return  jsonObject;
    }

    /**
     * 文件删除
     * @param urlName
     * @return
     */
    @RequestMapping("removeFile")
    @ResponseBody
    public JSONObject removeFile(String urlName) {
        JSONObject jsonObject = new JSONObject();
        try {
            // 参数为:地址,账号,密码
            MinioClient minioClient = new MinioClient(url, access, secret);
            if(urlName.indexOf("/bucketName") > -1){
                String[] strs = urlName.split("/bucketName");
                minioClient.removeObject("bucketName", strs[1]);
                jsonObject.put("success", true);
                jsonObject.put("msg", "删除成功");
            }
        } catch (Exception e){
            jsonObject.put("success", false);
            jsonObject.put("msg", "删除失败");
        }
        return  jsonObject;
    }

    /**
     * 文件修改
     * @param file
     * @return
     */
    @RequestMapping("/modifyFile")
    @ResponseBody
    public JSONObject modifyFile(MultipartFile file, @RequestParam("urlName") String urlName) {
        JSONObject jsonObject = new JSONObject();
        try {
            // 参数为:地址,账号,密码
            MinioClient minioClient = new MinioClient(url, access, secret);
            if(urlName.indexOf("/bucketName") > -1){
                String[] strs = urlName.split("/bucketName");
                minioClient.removeObject("bucketName", strs[1]);
            }
            InputStream is = file.getInputStream(); //得到文件流
            String fileName = "/" +file.getOriginalFilename(); //文件名
            String contentType = file.getContentType();  //类型
            // 使用putObject上传一个文件到文件夹中。
            //参数为:文件夹,要存成的名字,要存的文件
            minioClient.putObject("bucketName", fileName, is, contentType);
            String url = minioClient.getObjectUrl("bucketName", fileName);
            jsonObject.put("success", true);
            jsonObject.put("url", url);
        } catch (Exception e){
            jsonObject.put("success", false);
        }
        return  jsonObject;
    }

    /**
     * 文件下载
     * @param urlName
     * @param response
     */
    @RequestMapping("downloadFile")
    public void downloadFile(@RequestParam("urlName") String urlName, HttpServletResponse response) {
        try {
            // 参数为:地址,账号,密码
            MinioClient minioClient = new MinioClient(url, access, secret);
            InputStream object = null;
            if(urlName.indexOf("/bucketName") > -1){
                String[]  strs = urlName.split("/bucketName");
                object = minioClient.getObject("bucketName", strs[1]);
            }
            byte buf[] = new byte[1024];
            int length = 0;
            response.reset();
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(urlName.substring(urlName.lastIndexOf("/") + 1), "UTF-8"));
            response.setContentType("application/octet-stream");
            response.setCharacterEncoding("utf-8");
            OutputStream outputStream = response.getOutputStream();
            while ( object != null && (length = object.read(buf)) > 0) {
                outputStream.write(buf, 0, length);
            }
            outputStream.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

注:

1.桶的策略设置,是可以通过地址可以直接访问的;(版本过高可能没有此方法)
2.参考文档:API地址
https://docs.min.io/cn/java-client-api-reference.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值