我是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);