2016-01-29 117 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)即可。