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.
- Host: GitHub
- URL: https://github.com/idiocc/form
- Owner: idiocc
- License: agpl-3.0
- Created: 2019-07-05T07:57:07.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-12-24T09:19:06.000Z (over 6 years ago)
- Last Synced: 2025-03-15T12:34:08.130Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://www.idio.cc
- Size: 85 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @multipart/form
[](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 for Idio 2019
Tech Nation Visa Sucks