在开发中遇到minio上传文件的问题,故记录下。minio的中文文档:https://docs.min.io/cn/
添加minio的maven依赖:
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency>
Controller层:
public static MinioClient minioClient; public static String bucketName; private static final String endpoint = "minio服务器所在地址"; private static final String accessKey = "访问的key"; private static final String secretKey = "访问的秘钥"; private static final String url = "url前缀";//前缀 static { try { minioClient = new MinioClient("minio服务器所在地址", "访问的key", "访问的秘钥"); bucketName = "项目名称"; } catch (InvalidEndpointException e) { e.printStackTrace(); } catch (InvalidPortException e) { e.printStackTrace(); } } @ApiOperation("上传文件") @PostMapping(value = "/uploadFile") public Object uploadFile(MultipartFile[] file) { List<String> list = new ArrayList(); //JSONObject resultJson = new JSONObject(); //String url = null; for(MultipartFile multipartFile : file){ if (multipartFile.isEmpty()) { return ""; } try { String[] originalFilename = multipartFile.getOriginalFilename().split("\\."); InputStream inputStream = multipartFile.getInputStream(); String fileName = originalFilename[0] + "_"+System.currentTimeMillis() + "." + originalFilename[1]; minioClient.putObject(bucketName, fileName, inputStream, new PutObjectOptions(multipartFile.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE)); String address = minioClient.getObjectUrl(bucketName, fileName); //获得第一个点的位置 int index=address.indexOf("/"); System.out.println(index); //根据第一个点的位置 获得第二个点的位置 index=address.indexOf("/", index+2); //根据第二个点的位置,截取 字符串。得到结果 result String result=address.substring(index); list.add(url+result); //resultJson.put("url", minioClient.getObjectUrl(bucketName, fileName)); } catch (Exception e) { e.printStackTrace(); return "上传失败"; } } return list; }
final:不积跬步,无以至千里.不积小流,无以成江海