我正在创建一个文件上传系统。我的后端是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中使用以下代码:
现在问题是:在上传文件之前,我想对文件进行一些操作。具体来说,有两个方面:
我选择将要上传的文件存储到我的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(或类似工具)将其调整为几个预定义大小。
- 添加文件特定信息,这些信息也将保存到数据库中:参考上传文件的用户和文件所属的模型(即文章/评论)。
validate()
回调函数。 - Wesley Overdijk