使用minio接口里上传的图片无法在管理界面预览,直接在管理界面上传的图片可以预览

记录一下使用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;
}
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值