AmazonS3多部分上传

问题描述:

我已经使用多部分上传将图像上传到Amazon S3,如documentation中所述。AmazonS3多部分上传

但是,然后上传的文件可以直接访问,无需访问密钥或任何东西。使用从特定文件的响应中获取的远程URL进行测试。 有什么方法可以限制对上传文件的访问吗? 也有一种方法可以在这里更改上传URL,如果我想添加一个文件夹和文件?

+0

您需要为Amazon s3存储桶中的文件夹定义访问权限,因此可以限制 –

+0

@RajuSharma,该声明不正确。 ** S3存储桶和对象默认安全且无法访问**。如果一个对象可能被意外地匿名下载,那么在上传过程中或者在存储桶策略或ACL中,用户会犯一个错误。您的评论意味着安全性需要“文件夹”。 –

是的,你可以通过下面的方法来创建文件夹。

 AmazonS3 amazons3Client = new AmazonS3Client(new ProfileCredentialsProvider()); 
    public void createFolder(String bucketName, String folderName) 
     { 
      try 
      { 

         ObjectMetadata objectMetaData = new ObjectMetadata(); 
         objectMetaData.setContentLength(0); 
         InputStream emptyContent = new ByteArrayInputStream(new byte[0]); 
         amazons3Client.putObject(new PutObjectRequest(bucketName, folderName + "/", emptyContent, objectMetaData)); 
      } 
      catch (Exception exception) 
      { 
       LOGGER.error("Exception In Create Folder", exception); 
      } 

     } 

访问权限您可以使用策略,它会在具体应用到你的水桶,请点击以下链接 经过您可以允许特定的IP访问。 http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

+0

得到一个异常com.amazonaws.AmazonClientException:无法执行HTTP请求:读取超时。 –

+0

而不是AmazonS3 amazons3Client = new AmazonS3Client(new ProfileCredentialsProvider());使用您的AmazonS3客户端对象。 – KPP

+0

雅我做到了。我正在使用多部分上传。请求keyName更改为foldername +“/”+ key; ? http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html –

+0

thnx寻求帮助。这有所帮助。 –

+0

加入这个工作。 request.setCannedACL(CannedAccessControlList.AuthenticatedRead); –