我正在开发一个Android项目,其中我使用(AWS)来存储文件。我有这个:
AmazonS3Client s3Client = new AmazonS3Client( new BasicAWSCredentials(myId, myKey) );
s3Client.putObject( new PutObjectRequest(myBucketName, myObjectKey, myFile) );它已经被证明是成功的,因为我可以看到亚马逊的数据库中的文件。我想知道的是我能否获得一个成功的地位。如果上传成功,我希望能够执行代码,而其他代码则可以执行。有什么建议吗?
发布于 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
上传文件时:
直接从输入流上传时:
发布于 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
https://stackoverflow.com/questions/35727469
复制相似问题