我想用编码来添加文件夹在我的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