AmazonS3,如何检查上传是否成功?

我用Java编写了一个简短的测试代码,以上传内存中生成的PDF文件。在此测试代码中,我仅使用一个虚拟字节数组,但在实际使用中,我将在该字节数组中放置生成的PDF(最多2-3页)。一切正常:上传文件并设置权限。

但是,由于返回了PutObjectResult,所以我想知道应该如何检查它。还是足以找到AmazonClientException和AmazonServiceException异常?

换句话说:

    String bucket = "mybucket.example.com";

String fileName = "2011/test/test.pdf";

AmazonS3 client = new AmazonS3Client(new BasicAWSCredentials(

"accessKey", "secretKey"));

byte[] contents = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

InputStream stream = new ByteArrayInputStream(contents);

ObjectMetadata meta = new ObjectMetadata();

meta.setContentLength(contents.length);

meta.setContentType("application/pdf");

PutObjectResult res = client.putObject(bucket, fileName, stream, meta);

client.setObjectAcl(bucket, fileName, CannedAccessControlList.PublicRead);

回答:

我查看了AWS的源代码并对其进行了调试,发现了以下内容:

  • 如果未提供MD5,则将对其进行计算(适用于实际文件和InputStream)
  • 上传完成后,将比较md5客户端和服务器端,如果两者不同,则会引发AmazonClientException。[AmazonS3Client 1.19的第1188行]

换句话说,要回答我自己的问题,就足以侦听异常,因为还要检查上传数据的MD5,因此,如果存在损坏,则会引发异常。

AmazonClientException和AmazonServiceException是未经检查的异常,因此记住要听取它们很重要,因为编译器不会强迫您这样做。

以上是 AmazonS3,如何检查上传是否成功? 的全部内容, 来源链接: utcz.com/qa/424873.html

回到顶部