Код: Выделить всё
@Bean
public S3Client s3Client() {
return S3Client.builder()
.endpointOverride(URI.create(properties.getS3().getEndpoint()))
.region(Region.of(properties.getS3().getRegion()))
.credentialsProvider(StaticCredentialsProvider.create(
AwsBasicCredentials.create(
properties.getS3().getAccessKey(),
properties.getS3().getSecretKey()
)
))
.serviceConfiguration(builder ->
builder.chunkedEncodingEnabled(properties.getS3().getChunkedEncodingEnabled()))
.forcePathStyle(properties.getS3().getPathStyle())
.build();
}
Содержание запроса имеет меньше байтов, чем указанная длина содержимого: n байтов. RequestBody.frominputStream говорит, что автоматическая упаковка происходит, если исходный поток не поддерживает Mark/Reset, то я получаю ошибку при попытке создать BufferedInputStream :
java.io.io. Код выглядит так: < /p>
Код: Выделить всё
try (InputStream is = resource.getInputStream()){
PutObjectResponse putObjectResponse = s3Client.putObject(PutObjectRequest.builder()
.bucket(properties.getS3().getBucketName())
.key(resource.getFilename())
.build(), RequestBody.fromInputStream(is, resource.contentLength()));
return S3SavedFile.builder()
.key(resource.getFilename())
.size(putObjectResponse.size())
.build();
} catch (Exception e) {
throw e;
}
Скажите, пожалуйста, если это возможно, загрузить файл в S3, используя inputstream formit letplet?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-from-a-m