minio外链过期时间问题
因为需要将minio的图片地址发送至钉钉并推送至钉钉群,会出现钉钉发送的图片无法打开的情况,尝试给minio发送的图片加上外链之后,问题的到解决。
return minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket(bucketName)
.object(objectName)
.build());
}
/**
* 获取文件外链
*
* @param bucketName bucket名称
* @param objectName 文件名称
* @param expires 过期时间 <=7 秒级
* @return url
*/
public static String getPresignedObjectUrl(String bucketName, String objectName,
Integer expires)
throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, InvalidExpiresRangeException, ServerException, InternalException, NoSuchAlgorithmException, XmlParserException, InvalidBucketNameException, ErrorResponseException {
return minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket(bucketName)
.object(objectName)
.build());
}
今天得到一个额外的需求,需要将minio图片的地址存储在数据库中并支持预览。 因为原本的图片地址存在过去时间,而默认是查看源码发现 必须存在过期时间的。
static {
DEFAULT_EXPIRY_TIME = (int)TimeUnit.DAYS.toSeconds(7L);
}
思考为何加上外链后钉钉能够正常展示,并观察minio存储的文件格式 查看源码后发现:默认存储的contentType为 octet-stream
public String contentType() throws IOException {
String contentType = super.contentType();
return contentType != null ? contentType : "application/octet-stream";
}
这样就会导致浏览器打开文件默认是下载
解决方案:
在putObject上传文件时 指定contentType
/**
* 通过流上传文件
*
* @param bucketName 存储桶
* @param objectName 文件对象
* @param inputStream 文件流
*/
public static ObjectWriteResponse putObject(String bucketName, String objectName,
InputStream inputStream,String contentType)
throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, InvalidBucketNameException, ErrorResponseException {
return minioClient.putObject(
PutObjectArgs.builder().bucket(bucketName).object(objectName).contentType(contentType).stream(
inputStream, inputStream.available(), -1)
.build());
}
图片的则设置为 "image/png" 即可。
这样即使不用外链将图片发送给钉钉也能达到正常显示的效果,浏览器也可以正常打开
本文由 权鸣 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
1
1
555
555
1
1
1
1
1
1
1
1
1
1
1
1
1
1
555
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1