我目前正在我的应用程序中创建一个文件上传系统。我的后端是 Sails.js (10.4),它用作我的单独前端 (Angular) 的 API。
我选择存储要上传到 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
});
});
}
};
现在的问题是:我想在文件上传之前对其进行处理。具体有两点:
- 检查文件是否被允许:内容类型标头是否与我想要允许的文件类型匹配?(jpeg、png、pdf 等 - 只是基本文件)。
- 如果文件是图像,请使用 imagemagick(或类似的东西)将其调整为几个预定义的大小。
- 添加也将保存到数据库的文件特定信息:对上传文件的用户的引用,以及对文件所属模型(即文章/评论)的引用。
我不知道从哪里开始或如何实现这种功能。所以任何帮助将不胜感激!