我是node.js的新手。我已经完成了使用Restify模块将图像文件上传到Rest服务器。但现在,我需要确保我上传的图像文件大小&解析bodyParser中允许的文件类型。
我的解析代码是:
var restify = require('restify'),
fsEx = require('fs-extra'),
md5 = require("md5"),
path = require("path");
var server = restify.createServer({
name: 'Photo Upload api server'
});
server.use(restify.bodyParser({
maxBodySize: 2,
mapParms: true,
mapFiles: true,
keepExtensions: true
}));
server.post('/resized', function(req, res, next) {
var tempPath = req.files.photos.path;
var getFileExt = path.extname(tempPath);
var finalFileName = Date.now() + getFileExt;
var finalImgPath = __dirname + "/uploads/" + finalFileName;
fsEx.move(tempPath, finalImgPath, function(err) {
if (err) {
return console.error(err);
}
});
console.log('result FinalImage = ', finalImgPath);
res.end('image resized');
next();
});
答案 0 :(得分:1)
const maximumImageSize = 1 * 1024 * 1024;
const allowedImageFormats = ['.png', '.jpg', '.jpeg'];
const isValidImageFormat = (extension) => _.includes(allowedImageFormats, _.toLower(extension));
const isValidImageSize = (size) => size < maximumImageSize;
const imageExtension = path.extname(file.name);
if (!isValidImageFormat(imageExtension)) {
return next(new restify.errors.ForbiddenError('Invalid image format.'));
}
const imageSize = Number(req.headers['content-length']);
if (!isValidImageSize(imageSize)) {
return next(new restify.errors.ForbiddenError('Image is too big.'));
}