minio报错:io.minio.errors.ErrorResponseException: Invalid Request

报错

io.minio.errors.ErrorResponseException: Invalid Request
	at io.minio.MinioClient.execute(MinioClient.java:1201)
	at io.minio.MinioClient.executePost(MinioClient.java:1348)
	at io.minio.MinioClient.initMultipartUpload(MinioClient.java:4318)
	at io.minio.MinioClient.putObject(MinioClient.java:3754)
	at io.minio.MinioClient.putObject(MinioClient.java:3383)
	at cn.qgos.web.file.utils.FileUploader.putObject(FileUploader.java:171)
	at cn.qgos.web.file.utils.FileUploader.upload(FileUploader.java:128)
	at cn.qgos.web.file.controller.FileController.uploadList(FileController.java:152)
	...

但也找到的报错的位置,但我用postman走接口上传文件都是正常的。

正常

但是安卓调接口上传就报这个错,百度也百度不到解决办法。

解决办法

通过debug发现,postman上传的文件的Content-Typeimage/jpeg,而安装上传的文件的Content-Typemultipart/form-data,然后代码走到调用上传接口就报错。

报错代码:

// 上传文件
this.putObject(BUCKET_NAME, uploadName, is, contentType);

minio源代码:

  public void putObject(String bucketName, String objectName, InputStream stream, String contentType)
    throws InvalidBucketNameException, NoSuchAlgorithmException, InsufficientDataException, IOException,
           InvalidKeyException, NoResponseException, XmlPullParserException, ErrorResponseException,
           InternalException,
           InvalidArgumentException, InsufficientDataException {

    // Set the contentType
    Map<String, String> headerMap = new HashMap<>();
    headerMap.put("Content-Type", contentType);
    // 真正上传size赋值null
    putObject(bucketName, objectName, null, new BufferedInputStream(stream), headerMap);
  }

调用上传参数size直接赋值null,到这步就报错了,直接postman好使,但安卓端调用接口不好使,安卓不愿意改,只能我改咯。

修改后代码:

// 上传文件
this.putObject(BUCKET_NAME, uploadName, is,baseSize, contentType);

通过file拿到文件size,传size参,然后就好使了,估计安卓端还是配置有问题,但人家不愿意改,我也没办法。

其他报错:The specified bucket does not exist

# java   minio   error  

评论

企鹅群:39438021

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×