express文件上传中间件Multer最新使用说明
发布于 2 个月前 作者 Chen-xy 590 次浏览 来自 分享

说明

multer是express官方推荐的文件上传中间件,它是在busboy的基础上开发的。目前multer的最新版本为:~1.1.0。 本文所有代码段均使用此版本。 multer的官方地址:GitHub

配置

在nodejs下的package.json中添加multer依赖,运行加载依赖库。 新建multerUtil.js,

 var  multer=require('multer');
 var storage = multer.diskStorage({
     //设置上传后文件路径,uploads文件夹会自动创建。
        destination: function (req, file, cb) {
            cb(null, './public/uploads')
       }, 
     //给上传文件重命名,获取添加后缀名
      filename: function (req, file, cb) {
          var fileFormat = (file.originalname).split(".");
          cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
      }
 });  
     //添加配置文件到muler对象。
     var upload = multer({
          storage: storage
    });
    
	//如需其他设置,请参考multer的limits,使用方法如下。
   //var upload = multer({
  //    storage: storage,
  //    limits:{}
  // });
  
 //导出对象
module.exports = upload;

使用

testController.js

var muilter = require('./multerUtil');
        //multer有single()中的名称必须是表单上传字段的name名称。
 var upload=muilter.single('file');       	   
      exports.dataInput = function (req, res) {
      upload(req, res, function (err) {
        //添加错误处理
    if (err) {
         return  console.log(err);
    } 
        //文件信息在req.file或者req.files中显示。
    console.log(req);
  });
 }

app.js

 var testController=require('./testController');
 app.post('/dataInpute',testController.dataInput);

其他说明

1.文件上传有以下方法

2.file为上传字段名称,当使用form表单submit方式上传时,必须与表单上传的name属性保持一致。 表单记得加上 enctype=‘multipart/form-data’

3.对上传文件大小限制,名称限制等均可在limits中加上,具体可加属性,请参考官方api。

在网上搜索的其他资料大部分都版本较老,所以重新整理一下,希望对大家能有所帮助,如本人理解不正确或使用方法不当,还请多多指教。

9 回复

排版,格式调了好久都没调好,,哭~

@Chen-xy 兄弟,去学一下markdown写法,我帮你编辑了一下,你可以自己编辑一下看看

总结的还不错,继续加油

还有个 any() 方法

@i5ting 谢谢,现在看着清晰多了~

multer更新后, 按照以前的教程可能会跑不通. 不去看文档可能一头雾水

来自酷炫的 CNodeMD

@yinzSE 是的,这个是当前最新版的,版本号~1.1.0。

文件能上传,但是testController.dataInput进不去,如果空文件提交的话可以进去,不知道啥原因

回到顶部