Node.js - 生成multipart/form-data

6
有没有一个Node.js库可以生成以下形式的multipart/form-data内容?
------------------------------7a9cd2dc11c1
Content-Disposition: form-data; name="to"

destination@email.com
------------------------------7a9cd2dc11c1
Content-Disposition: form-data; name="from"

recipient@email.com
------------------------------7a9cd2dc11c1
Content-Disposition: form-data; name="subject"

subject line
------------------------------7a9cd2dc11c1
Content-Disposition: form-data; name="text"

This content does not matter.
------------------------------7a9cd2dc11c1--

你找到解决方案了吗?请回复并给出一个例子,我也遇到了同样的问题。 - Manish Gadhock
https://stackoverflow.com/questions/51274505/multipart-formdata-request-in-node-js - Manish Gadhock
3个回答

4

Fermata看起来可能是你需要的东西。从Github页面上可以看到:

fermata.json("http://example.com/some/action").post({
  'Content-Type':"multipart/form-data"
}, {
  fileField: form.input.file || {data:nodeBuffer, name:"", type:""}
}, callback)

如果我们想发送相同的请求,我们该如何发送?我已经尝试使用request模块。 https://stackoverflow.com/questions/51274505/multipart-formdata-request-in-node-js请帮忙。 - Manish Gadhock

1

我知道这已经过时了,但最近我需要生成一个表单的multipart/form-data body字符串,并遇到了这个线程。

我无法找到任何简单地完成此操作的模块,所以我自己制作了一个模块:https://github.com/kodie/form-data-body

你可以像这样使用它:

const formDataBody = require('form-data-body')

// Specify form fields
const fields = {
  name: 'My test post',
  description: 'This is just a test post',
  items: ['First Item', 'Second Item'],

  // Files should be an object with the name, type, and data set to strings
  image: {
    name: 'hello.jpg',
    type: 'image/jpeg',
    data: binaryImageData
  }
}

const boundary = formDataBody.generateBoundary()
const header = {
  'Content-Type': `multipart/form-data; boundary=${boundary}`
}
const body = formDataBody(fields, boundary)

示例输出:
----------------------------071517909670537006900435
Content-Disposition: form-data; name="name"

My test post
----------------------------071517909670537006900435
Content-Disposition: form-data; name="description"

This is just a test post
----------------------------071517909670537006900435
Content-Disposition: form-data; name="items[]"

First Item
----------------------------071517909670537006900435
Content-Disposition: form-data; name="items[]"

Second Item
----------------------------071517909670537006900435
Content-Disposition: form-data; name="image"; filename="hello.jpg"
Content-Type: image/jpeg

[BINARY IMAGE DATA]
----------------------------071517909670537006900435--

1

request支持multipart/form-data,如果您只想创建内容主体,请尝试form-data


如果我们想要发送相同的请求,我们该如何发送呢?我已经尝试使用 request 模块了。stackoverflow.com/questions/51274505/… 请帮忙。 - Manish Gadhock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接