在Node JS中上传文件之前,请验证用于文件上传的multipart / form-data流的mime类型

时间:2019-05-24 17:06:59

标签: node.js express stream mime-types multiparty

我是node.js的新手,并且想要在node express应用中上载multipart / form-data文件之前验证文件的mime类型。我之所以使用multiparty package是因为这样做的好处是可以在文件上传中使用流以减少内存消耗,因此我尝试使用mmgic,但是我总是得到文本/纯文本,欢迎提出任何想法

这是我的代码:

    const fs = require('fs')
    var multiparty = require('multiparty');
    const fileType = require('file-type');
    var mmm = require('mmmagic'),
       Magic = mmm.Magic;
    var magic = new Magic(mmm.MAGIC_MIME_TYPE);

let form = new multiparty.Form();
      let byteCount = 0;
      form.on('part', function (part) {
         let buf = Buffer.from(JSON.stringify(part));
         magic.detect(buf, function (err, result) {
            if (err) throw err;
            console.log(result);
         });
         part.on('error', function (err) {
            res.json({ done: 'false', result: err });
         });
         const w_stream = fs.createWriteStream(`${path}/${file_name}`);
         byteCount = byteCount + part.byteCount;
         console.log(`byteCount= ${byteCount}`);
         if (byteCount > max_size * 1e6)
            res.json({ done: 'false'});
         part.pipe(w_stream);
      });
      form.on('close', () => {
         res.json({ done: 'true'});
      });
      form.on('error', (err) => {
         res.json({
            done: 'false',
            error: err
         });
      });
  form.parse(req);

0 个答案:

没有答案