【发布时间】:2017-10-03 03:58:23
【问题描述】:
嘿,有人遇到过这个问题吗?我正在尝试使用 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);
}
});
【问题讨论】: