nodejs thumbnail 만들기

개요

먼저 multiparty로 req를 받아 파일과 필드값으로 나누어 준 뒤에 노드 썸네일을 통해 변환을 해 준다.

설치

npm install node-thumbnail

서버 코드

  var multiparty = require('multiparty');
  var thumb = require('node-thumbnail').thumb;

  router.post('/thumbnail',function(req,res){
    console.log("썸네일 변경!");
    var form = new multiparty.Form();
    form.parse(req,function(err,fields, files){
      if(err){
        console.log(err);
      }
      Object.keys(fields).forEach(function(name) {
        console.log('got field named ' + name);
      });
      console.log("files:", files);

      var fileName=fields.fileName[0];
      var oldPath = files.imageFile[0].path;
      console.log(fileName);
      // 서버에서 돌리는 부분
      var newPath = '/root/imageServer/public/images';
      
      thumb({
        basename:fileName.split(".")[0],
        suffix:'',
        source: oldPath,
        destination: newPath,
        width: 300
      }).then(function() {
        console.log('Success');
        res.sendStatus(200)
      }).catch(function(e) {
        console.log('Error', e.toString());
        res.sendStatus(500);
      });

    })
  })

default options

defaults = {
  prefix: '',
  suffix: '_thumb',
  digest: false,
  hashingType: 'sha1', // 'sha1', 'md5', 'sha256', 'sha512'
  width: 800,
  concurrency: <num of cpus>,
  quiet: false, // if set to 'true', console.log status messages will be supressed
  overwrite: false,
  basename: undefined, // basename of the thumbnail. If unset, the name of the source file is used as basename.
  ignore: false, // Ignore unsupported files in "dest"
  logger: function(message) {
    console.log(message);
  }
};

reference