Minio HTTP 远程调用上传文件
1,客户端
1,如果你拿到的是byte,需要转成 MultipartFile ,方法如下
byte[] data = xxxxxxxxxx; InputStream inputStream = new ByteArrayInputStream(data); MultipartFile file = new MockMultipartFile(filename,filename2,"image/jpeg", inputStream);
上面的需要引入maven
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>RELEASE</version>
</dependency>
2,如果你拿到的是 File或者MultipartFile(File需要转成MultipartFile),可以直接调用
RestTemplate template = new RestTemplate(); String url = "http://127.0.0.1:9999/minio/upload_url"; MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>(); paramMap.add("file", file.getResource()); paramMap.add("boot", "robot"); paramMap.add("path", "/face/tttt/tttt/"); result = template.postForObject(url, paramMap, String.class);
2,服务端
controller
package com.example.miniojava.controller; import com.example.miniojava.service.MinioService; import com.example.miniojava.service.MinioServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; @RestController @RequestMapping("/minio") public class MinioController { /*@Value("${server.port}") private String port;*/ @Autowired private MinioService minioService; @PostMapping("/upload_url") public String upload_url(MultipartFile file,String boot,String path) { if (boot==null || boot.equals("")) return "桶不能为空"; return minioService.uploadFile_url(file,boot,path); } }
MinioServiceImpl
@Service("MinioService")
public class MinioServiceImpl implements MinioService {
MinioClient minioClient = MinioStarts.minioClientInit();
MinioClient minioClient2 = MinioStarts.minioClientInit2();
/**
* 文件上传 能返回图片
* @param file web上传文件接收的参数
* @param path 文件路径
* @return
*/
public String uploadFile_url(MultipartFile file, String boot, String path) {
try {
//随机娶一个
if ((Math.random()>0.5?1:0)==0){
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists(boot);
if(isExist) {
System.out.println("桶已存在通过,执行插入,minio1");
} else {
// 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
minioClient.makeBucket(boot);
}
InputStream in = file.getInputStream();
String fileName = file.getOriginalFilename();//generalFileName(file.getOriginalFilename());
//minioClient.putObject(boot,path+fileName, file.getInputStream(),file.getContentType());
if (path!=null && !path.equals("null") && !path.equals("")){
minioClient.putObject(boot,path+fileName, file.getInputStream(),file.getContentType());
String aaaa = minioClient.presignedGetObject(boot,path+fileName);
//替换域名
aaaa = aaaa.replaceAll("http://127.0.0.1:9000/","https://xxxx.xxxx.com/");
String[] resMax = aaaa.split("\\?"); //minio配置永久不过期后截取?不要后面那一截
return resMax[0];
//return initParam.get("url")+"/"+path+boot+"/"+fileName;
}else{
minioClient.putObject(boot,fileName, file.getInputStream(),file.getContentType());
String aaaa = minioClient.presignedGetObject(boot,fileName);
aaaa = aaaa.replaceAll("http://127.0.0.1:9000/","https://xxxx.xxxx.com/");
String[] resMax = aaaa.split("\\?"); //minio配置了永久不过期后拿到的返回地址不要?后面那一截
return resMax[0];
}
}else{
//第二个minio,用来减轻服务器压力 一样的代码,服务器不同
}
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
3,minio初始化
package com.example.miniojava.util; import io.minio.MinioClient; import io.minio.errors.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Map; /** * yxp * 2021年4月30日17:55:21 */ @Configuration public class MinioStarts { /** * 初始化minio的客户端 * @return */ @Bean public static MinioClient minioClientInit() { try { return new MinioClient("http://127.0.0.1:9000","用户名","密码"); //return new MinioClient(minioUrl,minioUserName,minioPassWord); } catch (InvalidEndpointException e) { e.printStackTrace(); } catch (InvalidPortException e) { e.printStackTrace(); } return null; } }
zzzzzzzzzzzz

浙公网安备 33010602011771号