📅  最后修改于: 2023-12-03 15:17:57.626000             🧑  作者: Mango
本文将介绍如何在 Node.js 中使用 TypeScript 向 AWS S3 存储桶上传文件。AWS S3 存储桶是一种云存储服务,可用于在云中存储和检索任意数据。在以下内容中,我们将通过创建一个 Node.js 应用程序来演示如何使用 TypeScript 与 AWS SDK 进行交互,实现向 S3 存储桶上传文件的功能。
在开始之前,您需要进行以下准备工作:
使用 npm 包管理器安装 AWS SDK for JavaScript。
npm i aws-sdk
在项目根目录下创建一个名为 index.ts
文件。该文件包含向 S3 存储桶上传文件的功能。
import AWS from 'aws-sdk';
const s3 = new AWS.S3();
const bucketName = 'YOUR_BUCKET_NAME';
export const uploadFileToS3 = async ({ file, filePath }: { file: Buffer, filePath: string }): Promise<string> => {
const params = {
Bucket: bucketName,
Key: filePath,
Body: file,
};
try {
const { Location } = await s3.upload(params).promise();
return Location;
} catch (error) {
console.error(error);
throw new Error('Failed to upload file to S3');
}
};
该文件包含一个名为 'uploadFileToS3' 的函数,它接受包含文件数据和在 S3 存储桶中保存文件的路径的参数对象。在函数的第一行,我们使用 import
导入 AWS SDK 包。然后,我们创建了一个 S3 对象,并设置了桶名称。之后,我们导出 uploadFileToS3
函数,该函数使用 s3.upload
方法并传入要上传到 S3 的文件数据和其他必要参数。当上传完成后,我们将返回S3对象的位置。如果上传过程中出现错误,则我们将抛出错误信息。
在项目根目录下创建一个名为 tsconfig.json
的文件,用于设置 TypeScript 编译器选项。
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es5",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": "."
},
"exclude": ["node_modules", "**/*.spec.ts"]
}
该配置文件包含了编译器选项,如 module
,target
和 outDir
。我们还将 esModuleInterop
设置为 true
,以便正确支持 import
和 export
语句。baseUrl
设置为 .
以便在导入中使用相对路径。
在 package.json
中添加以下脚本以在本地运行 TypeScript 程序。
"scripts": {
"build": "tsc",
"start": "npm run build && node ./dist/index.js"
},
通过本文,您已经了解了如何在 Node.js 中使用 TypeScript 和 AWS SDK for JavaScript 向 S3 存储桶上传文件。如果您想要了解更多 AWS SDK 的用法,可以访问 AWS SDK for JavaScript 官方文档。