如何在上传前使用SailsJS Skipper验证文件类型

Tha*_*Dao 9 javascript node.js sails.js bluebird skipper

作为标题,现在我无法在上传之前检查文件类型.我只验证并且在文件上传成功后不允许保存数据.以下是基本代码

updateAvatar : function(data, context, req, res) {
  req.file('avatar').upload({
      dirname: '../../assets/images/avatar'
    }, function (err, files) {

    var allowExts = ['image/png', 'image/gif', 'image/jpeg'];

    if (err)
      return res.serverError(err);

    if (files.length === 0) 
      return res.badRequest('No file was uploaded!');

    if (allowExts.indexOf(files[0].type) == -1)
      return res.badRequest('File type is not supported!');

    // save database here
  });
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做正确的代码?对不起,我的英语不好!非常感谢!

The*_*bee 6

这花了我的时间来研究,所有功劳都归功于Darkstra,他提出了我们可以在哪里获取原始文件属性的想法,例如内容类型甚至文件名,我们可以在其中拆分以获取文件扩展名并进行检查

你可以在这里查看他的回答

主要是要注意这个

req.file('foo')._files[0].stream 它包含我们处理文件所需的一切,您可以通过 console.log 来查看它的内容。

至少你可以做任何你选择的操作。