誰かこの問題がありました。私は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);
}
});