Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Streaming body parser for node.js.

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 index.js
Octocat-spinner-32 package.json


Parted is a streaming multipart, json, and urlencoded parser for node.js, written from scratch. It comes bundled with an express middleware which will use the necessary parser depending on the request mime type. Each parser is also lazily loaded, so there is no unnecessary memory usage if you only need one of them.

The middleware will leave you with a req.body object, similar to the default body parser included in express. If a file was included with a multipart request, a temporary path to the uploaded file is provided in req.body.


$ npm install parted

As a middleware

(NOTE: Limit options have been slightly changed for v0.0.6. Refer to the example below.)

var parted = require('parted');

  // custom file path
  path: __dirname + '/uploads',
  // memory usage limit per request
  limit: 30 * 1024,
  // disk usage limit per request
  diskLimit: 30 * 1024 * 1024,
  // allow multiple parts of the same name,
  // then available as an array
  multiple: true

When multiple is disabled only a single part will be present for a given name, for example:

{ image: '/tmp/bigred.1319577761529.png' }

However when multiple is enabled, this may be an array:

{ images: 
   [ '/tmp/bigred-pau.1319577761529.png',
     '/tmp/bigred.1319577761529.png' ] }


The multipart parser alone

var multipart = require('parted').multipart;

var options = {
  limit: 30 * 1024,
  diskLimit: 30 * 1024 * 1024

var parser = new multipart(type, options)
  , parts = {};

parser.on('error', function(err) {

parser.on('part', function(field, part) {
  // temporary path or string
  parts[field] = part;

parser.on('data', function() {
  console.log('%d bytes written.', this.written);

parser.on('end', function() {


Running tests

$ node test

Something went wrong with that request. Please try again.