使用AWS SDK将文件上载到存储桶中的特定文件夹
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用AWS SDK将文件上载到存储桶中的特定文件夹相关的知识,希望对你有一定的参考价值。
我使用开发人员工具包为节点上传图像到AWS S3:
const aws = require('aws-sdk');
const s3Bucket = process.env.S3_BUCKET;
const s3 = new aws.S3({
signatureVersion: 'v4',
region: process.env.S3_REGION,
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
});
const s3Params = {
Bucket: s3Bucket,
Key: filename,
Expires: 60,
ContentType: filetype,
ACL: 'public-read',
};
这有效,但如何将图像上传到存储桶中的特定文件夹?
Amazon S3是一个平面存储系统,实际上并不使用文件夹。
而是,Key(filename)包括对象的完整路径,例如:
folder1/folder2/foo.txt
Amazon S3管理控制台确实在文件夹中显示存储桶内容,但它们是一个人工构造(称为公共前缀),以便我们人们更容易理解。
因此,如果您要上传到特定文件夹,只需在密钥中包含完整路径,它就可以工作(或者更准确地说,假装工作!)。
有趣的事实:您可以复制到不存在的文件夹,该文件夹将为您“创建”。然后,如果删除该对象,该文件夹将被“删除”,因为它实际上从未存在过!
实际上,我们没有S3中的文件夹对象以及关键名称的所有内容。当您将文件夹喜欢放在您的密钥名称中时,例如“folder / myfile.txt”,您可以将其视为S3浏览器上的文件夹。
AWS S3没有文件夹结构。它显示了S3桶中的文件夹,但这是Key结构。我在我的一份工作中使用了复制命令。复制S3 bucket文件夹中的文件。
aws s3 cp myapp.zip s3:// $ S3_BUCKET_NAME / FolderName / FileName
例
aws s3 cp myapp.zip s3:// $ S3_BUCKET_NAME / MyFolder / MyFileName
无需在AWS S3存储桶中创建任何文件夹,如果该文件夹不存在,它将创建特定文件夹
上面的代码是在文件夹中复制myapp.zip文件 - 文件名为MyFileName的S3存储桶的MyFolder
以上是关于使用AWS SDK将文件上载到存储桶中的特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章
如何使用angular js将aws s3文件复制到同一个存储桶中的特定文件夹
如何使用aws java sdk将文件从S3存储桶从一个区域复制到另一个区域?
在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)