2016-10-26 4 views
0

я хочу использовать следующую библиотеку для сжатия изображений https://github.com/imagemin/imageminКак использовать imagemin для сжатия изображений и Busboy

Проблема заключается в том, когда добавления пользователя, используя форму, как я включаю в деталях файла из формы к плану min min? Например, если поле формы файла является примером-образцом вызова, как подключить это поле формы к плану min min изображения, чтобы он мог сжимать изображения?

Я пробовал:

REQ от экспресс/nodejs REQ

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)); 
     } 
    }); 

Но проблема, я предпочитаю иметь буфер файла, который я могу загрузить на S3. Я не хочу приводить файлы в папку build/images. Я хочу получить буфер для файла, сжать его и загрузить этот буфер в s3. Как я могу использовать изображение мин, чтобы получить буфер загрузки файла через форму html и загрузить его на s3?

+0

Пожалуйста показать любой код, который вы имеете до сих пор. Предпочтительно рабочий сервер и веб-страница с формой. – tcooc

+0

Я добавил дополнительную информацию –

+0

Использовать ее - https://www.npmjs.com/package/compress-images –

ответ

0

Документация для выходного параметра показывает, что она является необязательной (хотя, по общему признанию, объявление функции не было, что может сбить с толку).

выход

Тип: Строка

Установите папку туда, где ваши файлы будут записаны. Если задано адресата, файлы не будут записаны.

Таким образом, вы можете отказаться от записи файлов в хранилище и просто использовать выход в памяти:

imagemin([file.path], { 
    plugins: [ 
     imageminMozjpeg(), 
     imageminPngquant({quality: '65-80'}) 
    ] 
}).then(files => { 
    // upload file to S3 
}); 
+0

Как мы используем это с busboy? вы знаете? См. Код выше –

Смежные вопросы