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

10

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

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
你好,你找到任何解决方案了吗? - Krunal Panchal
@KrunalPanchal,你可以查看我的答案来帮助自己。 - Theophilus Omoregbee
1个回答

6
这需要我花费一些时间进行研究,所有功劳归功于Darkstra,他提供了一个想法,可以获取原始文件属性,例如内容类型或文件名,我们可以拆分以获取文件扩展名并进行检查。
您可以在这里查看他的答案。
主要的是要注意:

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

至少您可以进行任何所需的操作。

问题是在调用req.file('foo')但没有上传时,导致我的应用程序崩溃,出现错误:EMAXBUFFER。 - Kreator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接