Java MinIO文件上传返回访问路径及访问配置
传统文件上传:@PostMapping("pic/upload")public String picUpload(MultipartFile file) {if (file.isEmpty() || file.getSize() == 0) {return "文件为空";}...
·
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();
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)