记录一下使用minio存储文件的时候遇到一些坑爹问题,先是上传的方法putObject,用官网给的sdk示例一写,发现居然提示错误了。然后进该方法类仔细看了一下,好家伙居然方法偷偷改过了但是官网还没改,于是写的测试方法如下:
//filename--图片名称 bucket -- 桶名称(bucketName) serviceUrl--文件服务器地址
public String saveImg(MultipartFile file, String bucket, String serviceUrl) throws NoSuchAlgorithmException, IOException,InvalidPortException, InvalidEndpointException {
String fileName = file.getOriginalFilename();
String url = null;
try {
// 此处我直接写死了自己的虚拟机地址
MinioClient minioClient = new MinioClient("http://192.168.0.35:9000", "minioadmin", "minioadmin");
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists(bucket);
if(isExist) {
System.out.println("Bucket already exists.");
} else {
// 创建一个名为asiatrip的存储桶,用于存储文件
minioClient.makeBucket(bucket);
}
InputStream in = file.getInputStream();
minioClient.putObject(bucket, fileName, in, new PutObjectOptions(in.available(),-1));
System.out.println("successfully uploaded to `test` bucket.");
in.close();
url = serviceUrl+"/"+bucket+"/"+fileName;
} catch(MinioException | InvalidKeyException e) {
System.out.println("Error occurred: " + e);
}
return url;
}
在写完以后测试了一下,图片是传上去了,但是进管理界面一看接口里传的文件居然是黑的无法预览,但是直接在管理界面上传的图片却可以预览,这特么是什么鬼。然后我又看了一下PutObjectOptions方法,发现该类里面有个setContentType方法,原来是contentType没传,补上以后再上传测试了一下总算是对了。修改后代码如下:
//filename--图片名称 bucket -- 桶名称(bucketName) serviceUrl--文件服务器地址
public String saveImg(MultipartFile file, String bucket, String serviceUrl) throws NoSuchAlgorithmException, IOException,InvalidPortException, InvalidEndpointException {
String fileName = file.getOriginalFilename();
String url = null;
try {
// 此处我直接写死了自己的虚拟机地址
MinioClient minioClient = new MinioClient("http://192.168.0.35:9000", "minioadmin", "minioadmin");
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists(bucket);
if(isExist) {
System.out.println("Bucket already exists.");
} else {
// 创建一个名为asiatrip的存储桶,用于存储文件
minioClient.makeBucket(bucket);
}
InputStream in = file.getInputStream();
PutObjectOptions options = new PutObjectOptions(in.available(),-1);
options.setContentType(file.getContentType());
minioClient.putObject(bucket, fileName, in, options);
System.out.println("successfully uploaded to `test` bucket.");
in.close();
url = serviceUrl+"/"+bucket+"/"+fileName;
} catch(MinioException | InvalidKeyException e) {
System.out.println("Error occurred: " + e);
}
return url;
}