@multipart/form

A Node.JS Class To Create Multipart/Form-Data Requests With Files and Fields.

Usage no npm install needed!

<script type="module">
  import multipartForm from 'https://cdn.skypack.dev/@multipart/form';
</script>

README

@multipart/form

npm version

@multipart/form is A Node.JS Class To Create Multipart/Form-Data Requests With Files and Fields.

yarn add @multipart/form
npm install @multipart/form

Table Of Contents

API

The package is available by importing its default class:

import Form from '@multipart/form'

class Form

The form class maintains an internal buffer with data that can be sent in a multipart/form-data request. It can append fields and files, and when a file path is given, it will be read from the file system and its contents will be added to the form data.

Form: Accumulates data in fields and returns the complete body.

Name Type & Description
constructor new (config: !FormConfig) => Form
Creates a new form instance that maintains a buffer of key-value pairs and files separated by a boundary.
buffer !Buffer
The data to send.
data string
The data to send as utf-8 string. Concatenates the buffer data with \r\n and adds the final --{boundary}-- to the returned string.
addFile (path: string, name: string, options?: !AddFileOptions) => void
Reads and adds the file to the request buffer.
addSection (key: string, value: (!Buffer | string)) => void
Adds a key-value pair to the form.

FormConfig: Options for the constructor.

Name Type Description Default
boundary string The hard-coded boundary for the requests. u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh

AddFileOptions: Options for adding files.

Name Type Description Default
type string The Content-Type description. application/octet-stream
noCache boolean Whether to not cache read files. false
filename string The filename property for Content-Disposition description. By default, will be same as the path argument. -
import Form from '@multipart/form'

(async () => {
  const form = new Form()
  await form.addFile(`test/fixture/test.txt`, 'file')
  form.addSection('hello', 'world')
  console.log(form.data)
})()
--u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh
Content-Disposition: form-data; name="file"; filename="test/fixture/test.txt"
Content-Type: application/octet-stream

a test file

--u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh
Content-Disposition: form-data; name="hello"

world
--u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh--

Copyright & License

GNU Affero General Public License v3.0

Art Deco © Art Deco for Idio 2019 Idio Tech Nation Visa Tech Nation Visa Sucks