我想用編碼來添加文件夾在我的Amazon S3的桶。 你能告訴我如何做到這一點?添加文件夾中的Amazon S3桶
回答
有在Amazon S3中沒有文件夾。只是大多數可用的S3瀏覽器工具都顯示了斜槓分隔的部分密鑰名稱作爲文件夾。
如果你真的需要,你可以在結束斜槓創建一個空的對象。例如「文件夾/」如果您使用GUI工具和AWS控制檯打開它,它將看起來像一個文件夾。
它看起來像我的文件夾? – Nate
看這個http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html – lucasddaniel
有了AWS SDK淨完美的作品,只要加入「/」這個名字的文件夾的結尾:
var folderKey = folderName + "/"; //end the folder name with "/"
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey);
var request = new PutObjectRequest();
request.WithBucketName(AWSBucket);
request.WithKey(folderKey);
request.WithContentBody(string.Empty);
S3Response response = client.PutObject(request);
然後刷新您的AWS控制檯,你會看到該文件夾
的AWS:S3軌寶石做到這一點本身:
AWS::S3::S3Object.store("teaser/images/troll.png", file, AWS_BUCKET)
會自動創建teaser
和images
「文件夾」,如果他們不這樣做已經存在。
與Java SDK AWS:
有在S3中沒有文件夾,只有鍵/值對。該密鑰可以包含斜線(
/
),並且會使其顯示爲管理控制檯中的文件夾,但通過編程方式,它不是文件夾,而是字符串值。如果您嘗試構建s3存儲桶,那麼您的命名約定(您提供文件的密鑰)可以簡單地遵循正常的目錄模式,即
folder/subfolder/file.txt
。當搜索(具體取決於您使用的語言),您可以用分隔符通過前綴搜索。在Java中,這將是一個
listObjects(String storageBucket, String prefix, String delimiter)
方法調用。的
storageBucket
是你斗的名稱,prefix
是你要搜索的關鍵,而delimiter
用於搜索基於關閉prefix
進行過濾。
正如大家都告訴過你的,在AWS S3中沒有任何「文件夾」,你正在錯誤地考慮它們。 AWS S3具有「對象」,這些對象可以看起來像文件夾,但它們並不是真正意義上的文件夾。如果您在Amazon AWS S3上尋找創建文件夾,您將找不到很多好結果。
有創造意義上的「文件夾」,您可以創建在S3模擬的文件夾結構,但同樣,各地正在創建的S3對象,而不是文件夾中的事實,包你的頭的方式。與此同時,您將需要命令「put-object」來創建此模擬文件夾結構。現在,爲了使用此命令,您需要安裝AWS CLI工具,請參閱AWS CLI Installation以獲取安裝指示信息。
的命令是這樣的:
aws s3api put-object --bucket your-bucket-name --key path/to/file/yourfile.txt --body yourfile.txt
現在,關於這個命令的最有趣的部分是,你並不需要把所有創建的「文件夾」(對象)的運行此命令之前。這意味着你可以有一個「文件夾」(對象)來包含事物,但是你可以使用這個命令在前面討論過的「文件夾」(對象)中創建模擬的文件夾結構。例如,我在我的S3存儲桶中有一個名爲「importer」的「文件夾」(對象),可以說我想將sample.txt插入年份,月份的「文件夾」(對象)結構中,然後將樣本「文件夾「(對象)。
如果我的bucket中只有「importer」對象,那麼在運行此命令之前,我不需要事先創建年份,月份和示例對象(「文件夾」)。我可以像這樣運行此命令:
aws s3api put-object --bucket my-bucket-here --key importer/2016/01/sample/sample.txt --body sample.txt
put-object命令將進入並創建我在--key標誌中指定的路徑。這是一個寶貝:即使你沒有文件上傳到S3,你仍然可以在S3存儲桶中創建對象(「文件夾」),例如,我創建了一個shell腳本來「創建文件夾」在桶中,通過放棄--body標誌,並且不指定文件名,並在--key標誌中提供的路徑末尾留下斜線,系統會在S3存儲桶內創建所需的模擬文件夾結構而不在過程中插入文件。
希望這可以幫助您更好地瞭解系統。注意:一旦創建了「文件夾」結構,您可以使用S3的「同步」命令將後代「文件夾」與本地計算機上的文件夾或甚至另一個S3存儲桶同步。
我意識到這個問題已經死了一段時間,但我從來沒有發現一個滿意的答覆過這個問題我自己,我只是碰巧遇到了正確的術語,我玩了一些shell腳本,直到我找出如何做到這一點。所以我想給任何需要知道如何做到這一點的人一個真正的答案。 – Jravict
相關的(對於那些想了解一下各種可用的S3 CLI,例如,.'s3' VS's3api'):https://stackoverflow.com/a/26396150/127971使用'AWS s3'可能會更容易,雖然安裝和用於許多任務,例如,將本地pwd中的所有文件複製到遠程:'aws s3 sync。 S3://我鬥'加最後的斜線,並留下脫去了身上的 – michael
CLI例如:'AWS s3api把對象--bucket我鬥--key文件夾/' –
在iOS系統(Objective-C的),我也按以下方式
您可以添加以下代碼以編程方式創建Amazon S3的桶裏面的文件夾。這是工作代碼片段。任何建議歡迎。
-(void)createFolder{
AWSS3PutObjectRequest *awsS3PutObjectRequest = [AWSS3PutObjectRequest new];
awsS3PutObjectRequest.key = [NSString stringWithFormat:@"%@/", @"FolderName"];
awsS3PutObjectRequest.bucket = @"Bucket_Name";
AWSS3 *awsS3 = [AWSS3 defaultS3];
[awsS3 putObject:awsS3PutObjectRequest completionHandler:^(AWSS3PutObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"error Creating folder");
}else{
NSLog(@"Folder Creating Sucessful");
}
}];
}
除了代碼之外,還有一些解釋會使此答案更有用。 @yogesh Dalavi這個代碼可以用於 –
。 –
對於斯威夫特,我創建,你在String
通過文件夾名稱的方法。
斯威夫特3:
import AWSS3
func createFolderWith(Name: String!) {
let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
folderRequest.key = Name + "/"
folderRequest.bucket = bucket
AWSS3.default().putObject(folderRequest).continue({ (task) -> Any? in
if task.error != nil {
assertionFailure("* * * error: \(task.error?.localizedDescription)")
} else {
print("created \(Name) folder")
}
return nil
})
}
然後,只需使用
func createFolderWith(Name: String!) {
let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
folderRequest.key = Name + "/"
folderRequest.bucket = "Your Bucket Name"
AWSS3.defaultS3().putObject(folderRequest).continueWithBlock({ (task) -> AnyObject? in
if task.error != nil {
assertionFailure("* * * error: \(task.error?.localizedDescription)")
} else {
print("created \(Name) folder")
}
return nil
})
}
在SWIFT 2.2,您可以創建文件夾,也可以複製整個文件夾到一個存儲桶。
aws s3 cp /path/to/folder s3://bucket/path/to/folder --recursive
也有選項同步使用aws s3 sync
一個文件夾下創建一個名爲「mydir1」一個空目錄。
下面是代碼的NodeJS,它應該是對其他語言類似。
訣竅是具有在對象的名稱的末尾斜槓(/),如在「mydir1 /」,否則一個名爲「mydir1」將被創建的文件。
let AWS = require('aws-sdk');
AWS.config.loadFromPath(__dirname + '\\my-aws-config.json');
let s3 = new AWS.S3();
var params = {
Bucket: "mybucket1",
Key: "mydir1/",
ServerSideEncryption: "AES256" };
s3.putObject(params, function (err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
return;
} else {
console.log(data); // successful response
return;
/*
data = {
ETag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
ServerSideEncryption: "AES256",
VersionId: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt"
}
*/
} });
來源:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
- 1. 使用C#將文件添加到Amazon S3上的存儲桶
- 2. Amazon S3存儲桶中的子文件夾目錄瀏覽
- 3. Amazon S3:如何獲取存儲桶中的文件夾列表?
- 4. 同步S3文件夾/桶
- 5. 如何檢查Amazon S3存儲桶內文件夾的子文件夾大小
- 6. s3桶中的文件夾大小
- 7. C#列表中的Amazon S3文件夾
- 8. Amazon S3的PHP類,可我直接上傳文件到文件夾的水桶
- 9. 不能在Amazon S3的桶
- 10. S3桶文件夾的子域
- 11. Amazon S3存儲桶備份
- 12. Amazon S3存儲桶策略
- 13. Amazon S3存儲桶上傳
- 14. Amazon S3安全存儲桶
- 15. Amazon S3的文件夾問題
- 16. 我們如何在Amazon S3存儲桶中爲文件夾設置CORS
- 17. 動態獲取Amazon S3存儲桶中文件的大小
- 18. 如何從URL獲取Amazon AWS S3存儲桶中的文件?
- 19. 使用python列出Amazon S3存儲桶中的所有文件
- 20. 在Unity中的Amazon S3存儲桶之間傳輸文件
- 21. 從Titanium下載Amazon S3存儲桶中的文件
- 22. 連接Amazon S3存儲桶中的文件
- 23. 在wordpress頁面上的Amazon s3存儲桶中列出文件
- 24. 複製同一Amazon S3存儲桶中的文件
- 25. 很多文件出現在我的Amazon S3存儲桶中
- 26. 從boto2下載S3存儲桶中的子文件夾文件
- 27. 如何將SSL證書添加到amazon s3存儲桶?
- 28. 通過s3cmd創建文件夾(Amazon S3)
- 29. Amazon S3文件夾級別權限
- 30. 使用PHP處理Amazon S3文件夾
這將有助於指定在哪個語言的「編碼」。 – samvermette