現在、アプリケーションでファイル アップロード システムを作成しています。私のバックエンドは、別のフロントエンド (Angular) の API として機能する Sails.js (10.4) です。
MongoDB インスタンスにアップロードするファイルを保存し、Sails のビルドでファイル アップロード モジュール Skipper を使用することにしました。アダプター skipper-gridfs ( https://github.com/willhuang85/skipper-gridfs ) を使用して、ファイルを mongo にアップロードしています。
ファイル自体をアップロードしても問題ありません。クライアントで dropzone.js を使用しており、アップロードされたファイルが /api/v1/files/upload に送信されます。ファイルがアップロードされます。
これを実現するために、FileController で次のコードを使用しています。
module.exports = {
upload: function(req, res) {
req.file('uploadfile').upload({
// ...any other options here...
adapter: require('skipper-gridfs'),
uri: 'mongodb://localhost:27017/db_name.files'
}, function(err, files) {
if (err) {
return res.serverError(err);
}
console.log('', files);
return res.json({
message: files.length + ' file(s) uploaded successfully!',
files: files
});
});
}
};
問題は、ファイルがアップロードされる前にファイルを処理したいということです。具体的には次の 2 つです。
- ファイルが許可されているかどうかを確認してください: content-type ヘッダーは、許可したいファイルの種類と一致していますか? (jpeg、png、pdf など - 基本的なファイルのみ)。
- ファイルが画像の場合は、imagemagick (または同様のもの) を使用して、あらかじめ定義されたいくつかのサイズにサイズ変更します。
- データベースにも保存されるファイル固有の情報を追加します。ファイルをアップロードしたユーザーへの参照、およびファイルが含まれるモデル (つまり、記事/コメント) への参照です。
どこから始めればいいのか、この種の機能を実装する方法がわかりません。だからどんな助けでも大歓迎です!