2016-01-29 120 views
2

我是亚马逊和java的总新手。 我在这里尝试两件事。使用API​​在亚马逊S3桶中创建文件夹/上传文件

1st - 我正在尝试在我的Amazon S3存储桶中创建一个文件夹,这个文件夹已经创建并获得了凭据。

2nd - 我试图上传一个文件到这个桶。

根据我的理解,我可以使用putObjectRequest()方法来执行我的任务。

PutObjectRequest(bucketName, keyName, file) 

上传的文件。

,我不知道我是否应该使用这种方法

PutObjectRequest(String bucketName, String key, InputStream input, 
     ObjectMetadata metadata) 

只是创建一个文件夹。我很喜欢InputSteam和ObjectMetadata。我不知道这到底是什么,我该如何使用它。

任何帮助将不胜感激。 :)

回答

0

是的,您可以使用PutObjectRequest(bucketName,keyName,file)来实现这两个任务。

1,创建文件夹S3
有了AWS S3的Java SDK,只需加上“/”的键值名的末尾,它会创建空文件夹。

var folderKey = key + "/"; //end the key name with "/" 

示例代码:

final InputStream im = new InputStream() { 
     @Override 
     public int read() throws IOException { 
     return -1; 
     } 
    }; 
    final ObjectMetadata om = new ObjectMetadata(); 
    om.setContentLength(0L); 
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, im, om); 
    s3.putObject(putObjectRequest); 

2,上传文件 只是类似,您可以从本地文件中获取输入流。

4

您不需要在Amazon S3中创建文件夹。实际上,文件夹不存在!

相反,(filename)包含完整路径和对象名称

例如,如果一个所谓cat.jpg文件是在animals文件夹,则该密钥(文件名)为:animals/cat.jpg

只需Put与该键和文件夹中的对象被自动创建。 (实际上,这不是真的,因为没有文件夹,但它是想象这个概念的一个很好的简单方法。)

至于要使用哪个函数...总是使用最简单的方法来满足您的需求。因此,只需使用PutObjectRequest(bucketName, keyName, file)即可。