提问人:jie Old 提问时间:11/17/2023 最后编辑:MC Emperorjie Old 更新时间:11/17/2023 访问量:27
minio-java 的用法:“java.io.IOException: unexpected end of stream on”
Use of minio-java: "java.io.IOException: unexpected end of stream on"
问:
minio-java 版本:
8.3.1
Minio版本:
我的配置
@Configuration(proxyBeanMethods = false)
public class MinioConfiguration {
@Bean
@SneakyThrows
@ConditionalOnMissingBean(MinioClient.class)
public MinioClient minioClient(MinioConfig ossProperties) {
return MinioClient.builder()
.endpoint(ossProperties.getEndpoint())
.credentials(ossProperties.getAccessKey(), ossProperties.getSecretKey())
.httpClient(newDefaultHttpClient())
.build();
}
private OkHttpClient newDefaultHttpClient() {
return new OkHttpClient()
.newBuilder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.protocols(Arrays.asList(Protocol.HTTP_1_1))
.retryOnConnectionFailure(true)
.build();
}
}
法典
@SneakyThrows
public String uploadFile(InputStream inputStream, String bucketName, String path, String suffix) {
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder()
.bucket(bucketName)
.build());
if (!exists) {
minioClient.makeBucket(MakeBucketArgs.builder()
.bucket(bucketName)
.build());
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
.bucket(bucketName)
.config(config)
.build());
}
String dateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String filePath = new StringBuilder()
.append(path)
.append(dateTime)
.append("/")
.append(IdUtil.fastSimpleUUID())
.append(suffix)
.toString();
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(filePath)
.stream(inputStream, inputStream.available(), -1)
.build());
return filePath;
}
当我在服务器上运行时,错误:“java.io.IOException:流的意外结束”,但不是每次,只是在长时间取消连接后的第一个连接上。本地操作正常,没有这种现象,我有点迷茫。
我也尝试加入 retryOnConnectionFailure,但 mini-java 8.3.1 不允许 PUT 和 POST 执行 retryOnConnectionFailure 操作。 我有其他解决方案吗?
我也尝试加入 retryOnConnectionFailure,但 mini-java 8.3.1 不允许 PUT 和 POST 执行 retryOnConnectionFailure 操作。 我有其他解决方案吗?
答: 暂无答案
评论