An open API service indexing awesome lists of open source software.

https://github.com/idiocc/form

A Node.JS Class To Create Multipart/Form-Data Requests With Files and Fields.
https://github.com/idiocc/form

Last synced: 8 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# @multipart/form

[![npm version](https://badge.fury.io/js/%40multipart%2Fform.svg)](https://www.npmjs.com/package/@multipart/form)

`@multipart/form` is A _Node.JS_ Class To Create Multipart/Form-Data Requests With Files and Fields.

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

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [API](#api)
- [`class Form`](#class-form)
* [`Form`](#type-form)
* [`FormConfig`](#type-formconfig)
* [`AddFileOptions`](#type-addfileoptions)
- [Copyright & License](#copyright--license)



## API

The package is available by importing its default class:

```js
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. | - |

```js
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)
})()
```
```http
--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