You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中发送带文件附件的HTTP请求至AWS Lambda端点

Node.js上传本地图片到AWS API Gateway Lambda最简实现

最简方案采用form-data处理文件表单,搭配node-fetch发送请求,无需复杂配置,代码量最少。

1. 安装依赖

npm install form-data node-fetch@2

注:选择node-fetch@2是因为v3版本仅支持ESM模块,v2兼容CommonJS格式,适配绝大多数Node.js项目环境,如果你用ESM项目可以直接安装最新版node-fetch。
额外提示:如果Node.js无法识别~开头的用户目录路径,可以用系统模块拼接绝对路径:

const path = require('path');
const os = require('os');
const IMAGE_PATH = path.join(os.homedir(), 'User/Images/photo.jpg');

2. 核心代码实现

const fs = require('fs');
const FormData = require('form-data');
const fetch = require('node-fetch');

// 本地图片路径
const IMAGE_PATH = '~/Users/User/Images/photo.jpg';
// 替换为你的API Gateway端点地址
const API_ENDPOINT = 'https://你的API ID.execute-api.区域.amazonaws.com/阶段/路径';

async function uploadImage() {
  // 构造表单对象
  const form = new FormData();
  // 把图片文件添加到表单,第二个参数可自定义文件字段名
  form.append('photo', fs.createReadStream(IMAGE_PATH));

  // 发送POST请求
  const response = await fetch(API_ENDPOINT, {
    method: 'POST',
    body: form,
    // form-data会自动生成带boundary的Content-Type头,不需要手动设置
    headers: form.getHeaders()
  });

  // 打印返回结果
  const result = await response.text();
  console.log('请求返回:', result);
}

uploadImage().catch(console.error);

3. AWS侧配置注意事项

  • API Gateway需要开启multipart/form-data类型的二进制支持,否则Lambda收到的文件内容会被转义无法正常解析
  • 如果你用的是Lambda代理集成,文件内容会以Base64编码格式存在event.body字段中,直接解码即可拿到原始图片二进制数据
  • 你提供的现有Lambda代码已经可以打印收到的完整请求内容,测试阶段可以直接在CloudWatch中查看请求结构

内容的提问来源于stack exchange,提问作者alphanumeric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:18:00