在 Node.js 中将文件上传到 Amazon S3

发布于 2022-08-01 23:13:46 字数 2165 浏览 198 评论 0

在本文中,您将学习如何 S3 使用 官方 AWS Node.js SDK 。 本文假设您在 AWS 中已有一个 S3 存储桶。 如果您不这样做,请按照 AWS 教程

以下是上传当前文件的基本示例 package.json 到 S3 存储桶。 您需要 3 个环境变量来运行以下脚本:

  • AWS_BUCKET 是您的 AWS 存储桶的名称。 存储桶就像 S3 的顶级文件夹。 关键细节是 S3 存储桶名称在所有 S3 中必须是唯一的。
  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY. 您可以通过单击 AWS 控制台

这是一个上传您的基本脚本 package.json 到 S3。 请注意,S3 SDK 当前 支持 promises

const AWS = require('aws-sdk');
const fs = require('fs');

AWS.config.update({
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});

const s3 = new AWS.S3();

const res = await new Promise((resolve, reject) => {
  s3.upload({
    Bucket: process.env.AWS_BUCKET,
    Body: fs.createReadStream('./package.json'),
    Key: 'package.json'
  }, (err, data) => err == null ? resolve(data) : reject(err));
});

// 'https://s3.us-west-2.amazonaws.com/<bucket>/package.json'
res.Location;

默认情况下,您上传​​的文件将是私有的。 换句话说,开放 https://s3.us-west-2.amazonaws.com/<bucket>/package.json 在您的浏览器中会给您一个错误。 要公开文件,您需要 设置 ACL选项 'public-read' 如下所示。

const res = await new Promise((resolve, reject) => {
  s3.upload({
    Bucket: process.env.AWS_BUCKET,
    Body: fs.createReadStream('./package.json'),
    Key: 'package.json',
    ACL: 'public-read' // Make this object public
  }, (err, data) => err == null ? resolve(data) : reject(err));
});

// 'https://s3.us-west-2.amazonaws.com/<bucket>/package.json'
res.Location;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

眼波传意

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

qq_Yqvrrd

文章 0 评论 0

2503248646

文章 0 评论 0

浮生未歇

文章 0 评论 0

养猫人

文章 0 评论 0

第七度阳光i

文章 0 评论 0

新雨望断虹

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文