node.js - 如何将文件从 multer 上传到另一个 API
问题描述
我有 2 个单独的 NodeJS API,它们使用 multer 来保存文件。我能够在第一个 API 中接收文件,如下所示:
{ fieldname: 'imageCdn',
originalname: 'hello.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 43 00 06 04 05 06 05 04 06 06 05 06 07 07 06 08 0a 10 0a 0a 09 09 0a 14 0e 0f 0c ... >
}
现在我想将此数据发送到第二个 API,如下所示:
const FormData = require('form-data');
service.saveImage = async (fileData) => {
try {
let payload = new FormData()
payload.append('imageFile', fileData[0]);
const data = await axios.post(`${app.Config.ApiUrl}/image/addImage`, payload, {headers: payload.getHeaders()});
console.log('list:', data)
} catch (err) {
log.error(err)
throw new Error(err);
}
}
错误:
Cannot read property '0' of undefined
对我有什么建议吗?
解决方案
您收到该错误是因为fileData
在执行该行时未定义。如果没有您的其余代码,我无法确定确切的原因。将信息从一个 API 传递到另一个 API 时,最好的方法是使用流。这样,您无需等待所有数据都到达您的应用程序,然后再将其发送到目的地。
推荐阅读
- html - Bootstrap 4 导航栏汉堡无法正确显示,它在移动设备上位于屏幕的一侧
- sql - 如何优化此 SQL Server 查询 - 多个子查询
- c++ - 重载插入运算符
- javascript - 在 useEffect 组件中指定依赖项
- java - RichCoFlatMapFunction 中的不完整/不一致状态
- python - 接收 'KeyError:1' ,为什么会发生这种情况,我该如何解决?
- azure - 用于将数据从 Cosmosdb 推送到 CRM 并执行更新的逻辑应用
- r - R 数据操作 - data.table / dplyr 中的 Rang 条件
- docker - 为什么我不能使用 Docker/VScode 进行远程调试?
- java - 没有状态字段的 java 对象如何存储在 JVM 中?