javascript - 如何使用 superagent 发送 FormData 对象
问题描述
我正在做一个 API 请求,然后是另一个 API 请求到我需要将文件传递到的不同服务器。
做第一个很好也很容易。它看起来像这样:
if (myFile) {
const data = new FormData()
data.append('myFile', myFile, myFile.name)
myFile = data
}
isomorphicFetch(`${MY_ENDPOINT}`, {
method: 'PATCH',
body: myFile
})
现在,在服务器端,我需要将其传递给另一台服务器。我正在使用超级代理。但是,我似乎在此过程中丢失了文件。以下是代码当前的样子:
const fileField = Object.keys(data).pop()
if (fileField === 'myFile') {
res = await request
.patch(`${MY_OTHER_ENDPOINT}`)
.send(data)
.query(query)
}
请注意,这data
是上一个请求的正文,并且该FormData
对象显示为空对象,因此我不确定从这里开始做什么。
在我的另一台服务器上,我的文件返回为undefined
,但是如果我直接从客户端发出请求,它会按预期通过。那么如何将 FormData 对象从一个服务器应用程序转发到另一个服务器应用程序?
解决方案
文件通常作为 Multipart 请求的一部分发布到服务器。
Superagent 支持这样的多部分请求:
request
.post('/upload')
.attach('image1', 'path/to/felix.jpeg')
.attach('image2', imageBuffer, 'luna.jpeg')
.field('caption', 'My cats')
.then(callback);
其他信息可以在他们的文档中找到: Superagent Docs - Multipart requests
具体到您的示例,您要确保您的服务器正在接收文件,然后使用附加功能将文件放入您的请求中。
推荐阅读
- html - Visual Studio Code 不会在 HTML 中自动关闭标签
- python - 如何在两个不同列上组合两个熊猫数据框,其中元素不按顺序排列?
- javascript - codePen 上的 jQuery Tic-Tac-Toe 无限循环警告
- javascript - 谷歌脚本 - 侧边栏按钮不断打开一个新标签
- bash - docker容器nginx启动但一直挂起
- react-native - 这些 React Native 启动命令有什么区别?
- amazon-web-services - AWS Lambda 函数扩展不足,无法处理 SQS 消息
- java - 为什么在使用协调器布局后小吃栏显示时我的其他视图没有上移?
- mfc - MFC:创建控件后的通知
- python - 有没有办法通过指定时间范围在时间列上将两个表连接在一起?