fileFilter
プラグインのオプションを使用してmulter
、画像をサーバーに保存するかどうかを決定しています。
その関数では、これらの画像をチェックして、それらが実際の画像であり、正しい形式であることをfileFilter
確認したいと考えています。以下のように、アップロードされた画像ファイルのファイルのみを公開します。しかし、確認するには実際の画像ファイルが必要です。magic bytes
Multer
json array
magic bytes
{ fieldname: 'file',
originalname: 'arsenal-home-kit.jpg',
encoding: '7bit',
mimetype: 'image/jpeg' }
次のコードで詳細な問題にコメントします。以下までの私の試み;
var storage = multer.diskStorage({
destination: __dirname + '/../public/images/',
filename: function (req, file, cb) {
console.log(file.originalname);
crypto.pseudoRandomBytes(16, function (err, raw) {
if (err) return cb(err);
cb(null, raw.toString('hex') + path.extname(file.originalname))
})
}
});
var upload = multer({
storage: storage,
fileFilter: function (req, theFile, cb) {
// using image-type plugin to check magic bytes
// I need actual image file right at here.
// theFile is json array, not the image file.
// How to I get the actual image file to check magic bytes.
if (imageType(theFile).ext === "jpg") {
// To accept the file pass `true`, like so:
cb(null, true);
} else {
// To reject this file pass `false`, like so:
cb(null, false);
}
}
});
PS画像タイプのプラグインを使用して、これらのマジック バイトをチェックすることにしました。