2016-09-30 1 views
0

私はnode.jsの初心者です。私は既にRestifyモジュールを使ってRestサーバーに画像ファイルをアップロードしました。しかし今、アップロードされた画像ファイルのサイズが&で、bodyParserのファイルタイプが許可されていることを確認する必要があります。NodeJsで最大アップロードファイルサイズと許可されるファイルタイプを定義する方法bodyParserを復元しますか?

私restifyコードは次のとおりです。

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
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.')); 
} 
+0

いいアイデアが、 'コンテンツlength'は、それはボディサイズ画像サイズではありません。 – Kostanos

+0

真。このコードは、エンドポイントが1つの画像しかアップロードしなかったプロジェクトからのものです。この場合、このコードは機能します。しかし、身体がイメージ以外のものを含んでいれば、何か他のものを行う必要があります。 –

関連する問題