私のnodejsアプリケーションは、エクスプレスミドルウェアによって許可されたユーザからのファイルアップロードを受け入れ、multerを使用します。multerを使用して一時ファイルをクリーンアップする方法
典型的なルートは、例えば、ユーザーが許可されている場合は、インポートを行い、チェックを認証:
router.post('/:id/import', passport.authenticate('jwt', { session: false }), permit('admin'), function(req, res, next) {
MyClass.doImport(req.file.path).then(function(result) {
res.json(result);
}).catch(function(error) {
res.status(500).json(error);
});
});
エラーはありません場合は、これは素晴らしい作品、およびインポート機能は、ファイルを削除します。しかし、エラー(無効または許可されていないユーザーなど)の場合は、アップロードされたファイルが作成され、ディスクに残ります。
すべての権限ミドルウェアが正常に実行されるまで、ディスクにファイルを作成しないとします。私は:すなわち、チェーンの最後としてmulterを使用して
var app = express();
app.use(// ...
app.use(passport.initialize());
app.use(multer({dest:'./tmp/'}).single('file'));
を試してみたが、認証エラーで、私はまだtmp内のファイルで終わります。
他のすべてのミドルウェアが通過するまでディスクにファイルを作成しないようにするにはどうすればよいですか?
これが不可能な場合は、添付ファイルがあり、アップストリームにエラーがある場合にのみ実行されるミドルウェア機能を追加できますか?
これを行いました。ありがとう!私はこれらのルータの方法が本当にミドルウェアチェーンの終わりに過ぎないことを忘れていました。 – user1272965