0

要从元数据提取器中获取 Metadata 对象,我使用以下代码:

Metadata metadata = ImageMetadataReader.readMetadata(photoFileContentStream);

photoFileContentStream是我从 S3 对象获得的 InputStream:

final S3ObjectInputStream objectContent = s3.getObject(objectRequest).getObjectContent(); 

使用较新版本的 AWS 开发工具包时,我在上述过程中收到以下丑陋警告:

WARN  com.amazonaws.services.s3.internal.S3AbortableInputStream  - Not all bytes were read from the S3ObjectInputStream, aborting HTTP connection. This is likely an error and may result in sub-optimal behavior. Request only the bytes you need via a ranged GET or drain the input stream after use.

原因似乎很明显:只有一小部分流用于从图像中提取元数据。

这可以通过在 S3 对象上使用远程获取来改进:

GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key);
rangeObjectRequest.setRange(0,endRange);
final S3ObjectInputStream objectContent = s3.getObject(rangeObjectRequest).getObjectContent();

我无法轻易找到:如何确定“endRange”的正确(或安全)值?即元数据位于流中的哪个位置?

4

0 回答 0