【发布时间】:2021-10-31 14:56:03
【问题描述】:
当我尝试上传任何大小以 MB 为单位的对象时,我收到此警告“警告:未为流数据指定内容长度。流内容将在内存中缓冲,并可能导致内存不足错误。”然后我的代码突然结束。我尝试将内容保存在临时文件中,然后在分段上传的帮助下上传,但它似乎也不起作用。
InputStream inputStream = part.getInputStream();
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion("eu-central-1")
.build();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(part.getContentType());
logger.log("setting metadata");
PutObjectRequest request = new PutObjectRequest(bucket, fileName, inputStream, metadata);
s3Client.putObject(request);
logger.log("putting in S3 bucket");
【问题讨论】:
-
docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/… 显然。阅读此 setContentLength 的 javadoc
-
是的,我看到了该链接,但正如您在 cmets 中看到的那样,它并没有太大帮助。当我添加缓冲区限制时,它会导致一个错误,即预期限制小于实际限制。
-
我阅读了文档,但正如您在我的代码中看到的那样,我的数据在输入流中,在这种情况下无法找到准确的限制。
标签: java amazon-web-services amazon-s3 inputstream