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。

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

  • 相关阅读:
    JS——几种数组遍历方式总结
    JS——获取浏览器地址栏中的参数
    JQuery——JQuery CSS 选择器
    Maven 配置 本地骨架创建工程
    在SpringBoot中的SpringSecurity的配置类中,http.permitAll()与web.ignoring()的区别
    spring-task定时任务动态配置修改执行时间
    常用加密工具类
    thinkphp3.2 验证码的生成和校验,以及遇到的一些问题
    js 倒计时Demo
    PHP递归函数详解
  • 原文地址:https://www.cnblogs.com/zaifeng0108/p/7225059.html
Copyright © 2011-2022 走看看