multipart-form-stream

transform files and fields into a multipart/form-data encoded stream

multipart-form-stream

transform files and parameters into a multipart/form-data encoded stream

var MultipartStream = require('multipart-form-stream')
  , request = require('request')
  , stream
  ;
 
stream = new MultipartStream({
  boundary: 'customMultipartBoundary' // optional 
});
 
// add a normal field parameter 
stream.addField('param1', 'value');
 
// add a file  
// addFile(field, path, [filename - defaults to filename in path]) 
stream.addFile('file1', '/path/to/file.png', 'thefile.png');
 
// add a stream 
// addStream(field, filename, mimeType, stream) 
stream.addStream('stream1', 'thefilename.png', 'image/png', imagestream);
 
// do something useful with this stream 
// let's pipe it to transloadit! 
// make sure you set the Content-Type header 
stream.pipe(request.post({
  uri: 'http://api2.transloadit.com/assemblies',
  headers: {
    'Content-Type': 'multipart/form-data; boundary=' + stream.getBoundary()
  }
}));
 
// enjoy streaming