最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用superagent发送FormData对象

运维笔记admin10浏览0评论

如何使用superagent发送FormData对象

如何使用superagent发送FormData对象

我正在做一个API请求,然后由另一个请求传递到我需要传递文件的不同服务器。

做第一个很好很容易。它看起来像这样:

if (myFile) {
    const data = new FormData()
    data.append('myFile', myFile, myFile.name)
    myFile = data
  }

isomorphicFetch(`${MY_ENDPOINT}`, {
        method: 'PATCH',
        body: myFile
      })

现在,在服务器端,我需要将其传递到另一台服务器。我正在使用superagent。但是我似乎在这个过程中丢失了文件。以下是代码目前的样子:

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

特定于您的示例,您希望确保您的服务器正在接收该文件,然后使用attach函数将该文件放入您的请求中。

发布评论

评论列表(0)

  1. 暂无评论