首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得使用Amazon服务的上传成功状态?

如何获得使用Amazon服务的上传成功状态?
EN

Stack Overflow用户
提问于 2016-03-01 15:56:02
回答 2查看 7.8K关注 0票数 4

我正在开发一个Android项目,其中我使用(AWS)来存储文件。我有这个:

代码语言:javascript
复制
AmazonS3Client s3Client = new AmazonS3Client( new BasicAWSCredentials(myId, myKey) );
s3Client.putObject( new PutObjectRequest(myBucketName, myObjectKey, myFile) );

它已经被证明是成功的,因为我可以看到亚马逊的数据库中的文件。我想知道的是我能否获得一个成功的地位。如果上传成功,我希望能够执行代码,而其他代码则可以执行。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-01 16:12:29

根据AWS S3 JavaDoc的说法:

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html#putObject%28com.amazonaws.services.s3.model.PutObjectRequest%29

亚马逊S3从不存储部分对象;如果在此调用期间没有引发异常,则存储整个对象。

因此,成功返回的PutObjectResult对象表示调用成功(即该对象已上载)。如果存在权限错误,将引发AmazonServiceException:

AmazonServiceException --如果在处理请求时亚马逊S3中发生了任何错误。

在上面的评论中引用的答案中,编辑1 (建议OP下载刚刚上传的文件,并将下载的副本与原始的文件进行比较),您实际上是在为上传和下载付费,我认为这对于大多数用例来说都是过分的。相反,使用PutObjectResult类中提供的信息,并验证是否存在该信息作为成功上传的证据。这并不是精确的确认,但如果没有抛出异常,则可以依赖S3的成功保证。

请记住以下上传文件与流的约束。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html#putObject%28com.amazonaws.services.s3.model.PutObjectRequest%29

上传文件时:

  • 客户端自动计算文件的校验和。亚马逊S3使用校验和来验证每个文件中的数据。
  • 使用文件扩展名,Amazon尝试确定要用于对象的正确的内容类型和内容配置。

直接从输入流上传时:

  • 在直接发送流之前,要小心在元数据对象中设置正确的内容类型。与文件上载不同,无法自动确定输入流中的内容类型。如果调用方没有显式设置内容类型,则不会在Amazon中设置内容类型。
  • 在数据可以上载到Amazon之前,必须指定内容长度。亚马逊S3明确要求在接受任何数据之前在请求头中发送内容长度。如果调用方没有提供长度,库必须缓冲输入流的内容,以便计算它。
票数 6
EN

Stack Overflow用户

发布于 2016-03-01 16:03:27

如果上传过程中出现错误,您将得到一个异常。putObject方法返回一个具有新上传的文件属性的PutObjectResult对象。

SDK:http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html#putObject(java.lang.String

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35727469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档