2013-05-12 80 views
4

我想上傳整個目錄使用Ruby AWS-SDK寶石S3。我首先試圖將它分解成更小的問題,所以我現在試圖做的只是創建一個文件夾,然後將文件放在該文件夾內。我知道技術上s3沒有文件夾,而是對象。我知道你可以擁有類似目錄的結構。我無法找到如何做到這一點的在線任何與文檔不提了很多關於目錄結構除了與AWS閱讀:: S3 ::樹如何在s3上使用ruby aws-sdk創建目錄結構?

這是我在創建一個文件夾,然後把當前的嘗試文件到文件夾:

#created an object called test 
obj = bucket.objects.create('test', 'data') 

#this is the path to a css file that I am uploading. 
path_to_file = './directory/mobile/player.css' 

#writing file to test object 
obj.write(Pathname.new(path_to_file)) 

這實際上在做什麼是寫入css文件來測試。我想要它做的是在名爲test的文件夾內創建一個css文件。

我相信我誤解對象與目錄的方式。任何人都可以發現我要出錯的地方,或者指出我的方向正確嗎?

+1

看起來有在Amazon S3中沒有目錄結構:http://serverfault.com/a/435828,http://stackoverflow.com/a/11503643/1008230 – fankt 2013-05-13 08:12:25

+4

,我發現,你可以只創建一個路徑的對象有一個類似目錄的結構。 bucket.objects.create(文件夾/測試/ player.css)。當你查看bucket as_tree時,它們將顯示爲目錄。 – 2013-05-13 15:43:31

+0

@SpencerCooley您能詳細說明您找到的解決方案嗎? – Noz 2014-01-03 19:09:14

回答

0

您可以使用下面的代碼:

# Instantiate the S3 client with your AWS credentials 
s3 = AWS::S3.new(
    :access_key_id => 'Aws_Access_Key', 
    :secret_access_key => 'Aws_Secret_Key' 
) 

# If you want to create bucket 
# bucketName: name of the bucket 
bucket = s3.buckets.create('bucketName', :acl => :public_read) 

# push file to s3 
# bucketName: Amazon Bucket Name 
# key: The file location that you want to create for your file. 
# e.g, key = "user/appName/myapp.zip" 
# File_To_Save: The location of your file. 

obj = bucket.objects['key'] 
obj.write(:file => file_name) 
puts obj.public_url 

# This key describes the directory structure for your file 
+0

不知道如何與AWS-SDK的V2爲此桶文件的目錄?看起來好像很多已經改變了,它不再那麼簡單了。 – mmichael 2015-03-22 22:26:01