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

时间:2015-08-31 03:30:24

标签: 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
  });
}

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

1 个答案:

答案 0 :(得分:3)

我花了很多时间研究Darkstra的所有信用,他们了解了我们可以获取原始文件属性的位置,例如内容类型甚至文件名,我们可以将其拆分为文件扩展名并进行检查

你可以查看他的答案 here

最重要的是要注意这个

  

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

谢谢,所以至少你可以对你的选择进行任何操作。