📜  nodejs aws s3 上传 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:17:57.626000             🧑  作者: Mango

Node.js AWS S3 上传 - TypeScript

本文将介绍如何在 Node.js 中使用 TypeScript 向 AWS S3 存储桶上传文件。AWS S3 存储桶是一种云存储服务,可用于在云中存储和检索任意数据。在以下内容中,我们将通过创建一个 Node.js 应用程序来演示如何使用 TypeScript 与 AWS SDK 进行交互,实现向 S3 存储桶上传文件的功能。

准备工作

在开始之前,您需要进行以下准备工作:

  1. 拥有 AWS 帐户并创建一个 S3 存储桶。
  2. 安装 Node.js 和 npm。
  3. 创建项目并设置 package.json 文件。
安装 AWS SDK 包

使用 npm 包管理器安装 AWS SDK for JavaScript。

npm i aws-sdk
创建 TypeScript 代码文件

在项目根目录下创建一个名为 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对象的位置。如果上传过程中出现错误,则我们将抛出错误信息。

TypeScript 配置文件

在项目根目录下创建一个名为 tsconfig.json 的文件,用于设置 TypeScript 编译器选项。

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es5",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "baseUrl": "."
  },
  "exclude": ["node_modules", "**/*.spec.ts"]
}

该配置文件包含了编译器选项,如 moduletargetoutDir。我们还将 esModuleInterop 设置为 true,以便正确支持 importexport 语句。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 官方文档