Amazon web services S3直接bucket上传:成功,但文件不存在

Amazon web services S3直接bucket上传:成功,但文件不存在,amazon-web-services,file-upload,amazon-s3,Amazon Web Services,File Upload,Amazon S3,我使用一个多部分表单上传和一个签名策略(使用AWS签名版本2)将一个文件直接上传到一个S3 bucket,如前所述 上传成功(我被重定向到success\u action\u redirect URL),但文件在bucket中不可见,在应该显示的键下。虽然上传文件的ACL设置为public read,但我认为这可能是权限问题,但即使bucket的所有者也看不到该文件 有人暗示可能是错的吗 谢谢。事实证明,我所需要做的就是确保上传的文件名包含在上传到S3的键中 如果您有这样的表格: <for

我使用一个多部分表单上传和一个签名策略(使用AWS签名版本2)将一个文件直接上传到一个S3 bucket,如前所述

上传成功(我被重定向到success\u action\u redirect URL),但文件在bucket中不可见,在应该显示的键下。虽然上传文件的ACL设置为
public read
,但我认为这可能是权限问题,但即使bucket的所有者也看不到该文件

有人暗示可能是错的吗


谢谢。

事实证明,我所需要做的就是确保上传的文件名包含在上传到S3的
键中

如果您有这样的表格:

<form action="http://johnsmith.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
  <input type="input" name="key" value="user/eric/" /><br />
  (...)
</form>

另请参阅。

每当我们使用预先签名的url上载文件的小部分时,它将在AWS的临时位置上载这些部分

成功上传文件的所有部分后,执行CompleteMultipartUploadRequest,它会将您的文件存储在s3存储桶中

我希望它对你有用

CompleteMultipartUploadResult multipartCompleteResult = null;

        List<PartETag> partETags = new new ArrayList<>();
        partETags.add(new new PartETag(partNumber1, eTag1));
        partETags.add(new new PartETag(partNumber2, eTag2));
        partETags.add(new new PartETag(partNumber3, eTag3));

        CompleteMultipartUploadRequest multipartCompleteRequest =
                new CompleteMultipartUploadRequest(getAmazonS3BucketName(), objectKey, uploadId, partETags);

        multipartCompleteResult = getAmazonS3Client().completeMultipartUpload(multipartCompleteRequest);
CompleteMultipartUploadResult multipartCompleteResult=null;
List partETags=new-ArrayList();
添加(新的PartETag(partNumber1,eTag1));
添加(新的PartETag(partNumber2,eTag2));
添加(新的PartETag(零件号3,eTag3));
CompleteMultipartUploadRequest multipartCompleteRequest=
新的CompleteMultipPartUploadRequest(getAmazonS3BucketName(),objectKey,uploadId,ParteTag);
multipartCompleteResult=getAmazonS3Client().completeMultipartUpload(multipartCompleteRequest);
看看这个
CompleteMultipartUploadResult multipartCompleteResult = null;

        List<PartETag> partETags = new new ArrayList<>();
        partETags.add(new new PartETag(partNumber1, eTag1));
        partETags.add(new new PartETag(partNumber2, eTag2));
        partETags.add(new new PartETag(partNumber3, eTag3));

        CompleteMultipartUploadRequest multipartCompleteRequest =
                new CompleteMultipartUploadRequest(getAmazonS3BucketName(), objectKey, uploadId, partETags);

        multipartCompleteResult = getAmazonS3Client().completeMultipartUpload(multipartCompleteRequest);