node.js - 使用 AWS SDK 将文件上传到存储桶中的特定文件夹

标签 node.js amazon-web-services amazon-s3 aws-sdk

我正在使用 Node 的开发人员工具包将图像上传到 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(文件名)包括对象的完整路径,例如:

folder1/folder2/foo.txt

Amazon S3 管理控制台确实会显示文件夹中的存储桶内容,但它们是一种人工构造(称为通用前缀),以便于我们人类更容易理解。

因此,如果您想上传到特定文件夹,只需在 key 中包含完整路径,它就会起作用(或者,更准确地说,假装起作用!).

有趣的事实:您可以复制到不存在的文件夹,该文件夹将为您“创建”。然后,如果您删除该对象,该文件夹将被“删除”,因为它实际上从未存在过!

关于node.js - 使用 AWS SDK 将文件上传到存储桶中的特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51214518/

相关文章:

jquery - XMLHttpRequest 无法加载 请求的资源上不存在 'Access-Control-Allow-Origin' header 。 AWS S3、Retina.JS

ruby-on-rails - Rails3 - 如何在应用程序中获取 aws-s3 的 yml 配置数据?

javascript - 如何使用node js检查文件是否存在于 's3'/ 'azure'路径中

javascript - 无法更改图标图像(React)

amazon-web-services - 在 aws-cli 中,如何根据条件从 DynamoDB 中删除项目?

apache-spark - 无法使用 Spark 2.2 访问 S3 数据

node.js - 制作一个接受命令行参数的脚本

node.js - MongoNetworkError : connection 3 to cluster0-shard-00-02-z0urk. mongodb.net:27017 已关闭

amazon-web-services - 如何测试 AWS 命令​​行工具的凭证

amazon-web-services - 如何将 ssh 与 AWS ssm session 和多配置文件结合使用?