在Sails js中检查上传的文件扩展名

时间:2015-10-23 07:39:19

标签: node.js sails.js

我们如何在sails js中检查上传的文件扩展名? 我尝试了skippermulter但没有结果。 有什么建议吗?

2 个答案:

答案 0 :(得分:11)

在保存之前,您应该为每个文件使用saveAs选项。

var md5 = require('md5');
module.exports = {

  testUpload:function(req,res){

     // setting allowed file types
     var allowedTypes = ['image/jpeg', 'image/png'];

     // skipper default upload directory .tmp/uploads/
     var allowedDir = "../../assets/images";

    // don not define dirname , use default path
    req.file("uploadFiles").upload({
       saveAs:function(file, cb) {
          var d = new Date();
          var extension = file.filename.split('.').pop();
          // generating unique filename with extension
          var uuid=md5(d.getMilliseconds())+"."+ extension;

          // seperate allowed and disallowed file types
          if(allowedTypes.indexOf(file.headers['content-type']) === -1) {
            // save as disallowed files default upload path
            cb(null,uuid);
          }else{
            // save as allowed files
            cb(null,allowedDir+"/"+uuid);
          }
       }
    },function whenDone(err,files){
       return res.json({
         files:files,
         err:err
        });
      });
    }
 }

答案 1 :(得分:0)

只需获取上传的文件数组并检查点后的最后一串字符串。

req.file('file').upload({
  maxBytes: 2000000,
  dirname: 'uploadFolder'
}, function (error, files) {
  if (error) return sails.log.error(error);

  // You have files array, so you can do this
  files[0].fd.split('.').pop(); // You get extension
}

这里发生了什么?上传完成后,您将获得带有文件名的文件数组。您可以从该阵列获取数据并查看该文件的位置(完整路径)。

最后一件事是按点分割字符串,并使用pop()方法从数组中获取最后一项。