zoukankan      html  css  js  c++  java
  • express文件上传中间件Multer最新使用说明

    

    原文地址 http://cnodejs.org/topic/564f32631986c7df7e92b0db


    说明

    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.文件上传有以下方法

    • muilter.single(‘file’), //适用于单文件上传
    • muilter.array(‘file’,num), //适用于多文件上传,num为最多上传个数,上传文件的数量可以小于num,
    • muilter.fields(fields), //适用于混合上传,比如A类文件1个,B类文件2个。官方API有详细说明。

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

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

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

  • 相关阅读:
    LeetCode 55. 跳跃游戏(Jump Game)I II tag 数组 贪心 动态规划
    科学的意义
    umi前后端交互技术,通用型request配置
    TD demo在我们机器上
    Ubuntu挂载和登录服务器
    TD属性总结
    TD音乐界面添加keyboard的流程
    VS Code常用键
    TD打印 log方法
    TD自定义控件流程
  • 原文地址:https://www.cnblogs.com/zaifeng0108/p/7225059.html
Copyright © 2011-2022 走看看