我正在执行一个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对象从一个服务器应用程序转发到另一个服务器应用程序?
答案 0 :(得分:1)
文件通常作为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
特定于您的示例,您想确保服务器正在接收文件,然后使用 attach 函数将文件放入请求中。