Image Can';t打开多个上传的文件

Image Can';t打开多个上传的文件,image,express,multer,Image,Express,Multer,嘿,有人有这个问题吗。我正在尝试使用multer(发送图像的邮递员)上传图像。较小的文件~50Kb仅显示为空文本/普通文件,较大的~2.1Mb图像会被上载,但它们的大小不同(从原来的2087736字节到2023146字节),我无法为PNG->(错误不是PNG文件)和jpeg格式->(不是JPEF文件:以0x8d 0x35开头) 在multer方面,我使用了一些过滤,并且有一些限制: var photoUpload = multer({ storage: phtStorage, fileFilte

嘿,有人有这个问题吗。我正在尝试使用multer(发送图像的邮递员)上传图像。较小的文件~50Kb仅显示为空文本/普通文件,较大的~2.1Mb图像会被上载,但它们的大小不同(从原来的2087736字节到2023146字节),我无法为PNG->(错误不是PNG文件)和jpeg格式->(不是JPEF文件:以0x8d 0x35开头)

在multer方面,我使用了一些过滤,并且有一些限制:

var photoUpload = multer({ storage: phtStorage, fileFilter: photoFilter, limits: limits }).single('file');
但它们并不是与众不同的

过滤器:

var photoFilter = function(req, file, cb) {

if (settings.acceptedPhotoTypes.indexOf(file.mimetype) !== -1)
    cb(null, true);
else
    cb('Invalid file type', false);
};
存储:

var phtStorage = multer.diskStorage({
    destination: function (req, file, cb) {
        var path = settings.photoProcessingSrcDir;
        mkdirp(path, err => cb(err, path));
        cb(null, path);
    },
    filename   : function (req, file, cb) {
        cb(null, req.fileName.toString());
    }
});
限制:

var limits = { fileSize: 20000000 };
我所做的唯一奇怪的事情就是将函数
photoUpload
传递到另一个函数中,因为我想在实际上传之前进行一些数据库验证

router.post('/:catalogId/:storeId', protected, function(req, res, next) {

  if (f.type === 'photo') { 
    require('../helpers/files/post-photo')(photoUpload, req, res, next); 
  }

});

我终于找到了问题所在。存储函数写得不好:

var phtStorage = multer.diskStorage({
    destination: function (req, file, cb) {
        var path = settings.photoProcessingSrcDir;
  ----> mkdirp(path, err => cb(err, path));
  ----> cb(null, path);
    },
    filename   : function (req, file, cb) {
        cb(null, req.fileName.toString());
    }
});
两个cb(回调函数)都被调用,这导致Mutters内部流创建函数创建两个流。这真的把事情搞砸了