在 Node.js 中将文件上传到 Amazon S3
在本文中,您将学习如何 S3 使用 官方 AWS Node.js SDK 。 本文假设您在 AWS 中已有一个 S3 存储桶。 如果您不这样做,请按照 AWS 教程 。
以下是上传当前文件的基本示例 package.json
到 S3 存储桶。 您需要 3 个环境变量来运行以下脚本:
AWS_BUCKET
是您的 AWS 存储桶的名称。 存储桶就像 S3 的顶级文件夹。 关键细节是 S3 存储桶名称在所有 S3 中必须是唯一的。AWS_ACCESS_KEY_ID
和AWS_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 技术交流群。
上一篇: Mocha 测试运行器简介
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论