2017-05-04 5 views
0

誰かこの問題がありました。私はmulter(それらを送信するための郵便配達員)を使用して画像をアップロードしようとしています。小さなファイル〜50Kbは空のテキスト/プレーンファイルとしてのみ表示されますが、サイズが2.1Mbより大きいイメージはアップロードされますが、そのサイズは元の2087736バイトから2023146までと異なりますので、PNGで開くことはできません - >(エラーはpngファイルではありません) jpegの場合 - >(JPEFファイルではない:0x8d 0x35で始まる) multer側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); 
    } 

}); 

答えて

0

私はついにこの問題を発見しました。記憶機能ひどく書かれた:

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(コールバック関数)が呼び出されると、それは2つのストリームを作成する機能を作成multers内​​側流を生じます。これは本当に物事を混乱させる...

関連する問題