title: How to use imagemin to compress images and busboy
body: <p>I want to use the following library to compress images
  <a href="https://github.com/imagemin/imagemin" rel="nofollow">https://github.com/imagemin/imagemin</a></p>
  
  <p>The problem is when the user uploads using a form, how do I plug in the file details from the form to the image min plugin? Like for example, if the file form field is call example-image, how do I plug that file form field to image min plugin so that it can compress the images?</p>
  
  <p>I tried: </p>
  
  <p>req is from the express/nodejs req</p>
  
  <pre><code>  var filebus = new Busboy({ headers: req.headers }),
     promises = [];
  
      filebus.on('file', function(fieldname, file, filename, encoding, contentType) {
  
          var fileBuffer = new Buffer(0),
              s3ImgPath;
  
          if (file) {
              file.on('data', function (d) {
                  fileBuffer = Buffer.concat([fileBuffer, d]);
              }).on('end', function () {
                  Imagemin.buffer(fileBuffer, {
                      plugins: [
                          imageminMozjpeg(),
                          imageminPngquant({quality: '80'})
                      ]
                  }).then(function (data) {
                      console.log(data[0]);
                      if (s3ImgPath) {
                          promises.push(this.pushImageToS3(s3ImgPath, data[0].data, contentType));
                      }
                  });
              }.bind(this));
          }
      });
  </code></pre>
  
  <p>But the problem is I rather have a buffer of the file that I can upload to S3. I don't want to come the files to a build/images folder. I want to get a buffer for the file, compress it, and upload that buffer to s3. How can I use image min to get a buffer of the file upload via html form and upload that to s3?</p>