express文件上传中间件Multer最新使用说明

2023-11-04



原文地址 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。

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

转载于:https://www.cnblogs.com/zaifeng0108/p/7225059.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

express文件上传中间件Multer最新使用说明 的相关文章

随机推荐

  • pg 创建分区表 --chatGpt

    问 postgreSql 创建表 addresses id mkey pri addr 其中 id自增且id值会超过上百亿 mkey长度为8且唯一的字符串 pri长度64的字符串 addr长度64的字符串 用散列分区的方式创建 gpt 你可
  • springboot个性化课程推荐系统个性化课程推荐系统毕业设计源码131805

    Springboot个性化课程推荐系统 摘 要 随着计算机技术的发展 特别是计算机网络技术与数据库技术的发展 使用人们的生活与工作方式发生了很大的改观 本课题研究的个性化课程推荐系统 主要功能模块包括学生管理 课程管理 课程分类 课程学习管
  • React项目中请求接口的封装

    封装目录中所包含的文件 Api js ApiIp js ApiURL js ApiIp js文件的作用 这个文件的作用主要是在开发环境和生产环境下调用不同的接口请求地址 生产环境下此文件的作用是动态 的获取浏览器中的地址进行拼装 便可以动态
  • 数据挖掘研究方向、热点以及对大数据研究的认识

    日期 2015 07 07 来源 博客园 作者 chuanting zhang 字体 大中 小 通过上网查询以及看同行对会议的公共认识 数据挖掘领域的顶级会议是KDD ACM SIGKDD Conference on Knowledge D
  • 再记一次挖矿病毒应急响应

    一 事件发生背景 办事处部署的TAR产生挖矿告警 如下图 1 TAR挖矿告警所示 告警显示是售前用来存储文件的服务器 IP 10 33 15 240 中了CoinMiner挖矿病毒 图 1 TAR挖矿告警 二 初步排查判断 通过分析TAR设
  • 最长公共子序列LCS 输出所有LCS

    原博客地址 最长公共子序列LCS 求法 O mn 即输出所有LCS 最长公共子序列LCS 求法 O mn 即输出所有LCS include
  • 【SpringCloud】Stream消息通知使用

    文章目录 概述 标准MQ 配置 POM YML 示例 消息发送 配置RabbitMQ可视化插件 消息消费者 遇到的问题 复现 解决 修改YML 注意 概述 屏蔽底层消息中间件的差异 降低切换成本 统一消息的编程模型 官网 https spr
  • TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

    谷歌下的翻译是 内置函数或方法对象没有获取项目属性 错误的是在内置的函数中符号写错 例如 range 1 5 写成 range 1 5
  • BaseRecyclerViewAdapterHelper之BaseMultiItemQuickAdapter实现多级列表功能

    这里实现的是一个三级列表效果 可展开和收起 三个实体类ExpandItem Expand1Item和Expand2Item 均要继承AbstractExpandableItem 实现接口MultiItemEntity public clas
  • Spring Cloud介绍

    给你们看看我上课在干啥你就知道我为啥啥都不会了 上课笔记 emmm 字比较丑 我还记得那是一堂英语课 老师不让用电子设备 我只能手写我这篇文章的思路 所以 冒着期末要挂科的风险 我也得把这篇文章写完 给大家分享知识 自己也能重新复习和认识一
  • JVM类的加载机制

    1 类的加载机制 类的加载指的是将类的 class文件中的二进制数据读入到内存中 将其放在运行时数据区的方法区内 然后在堆区创建一个java lang Class对象 用来封装类在方法区内的数据结构 类的加载的最终产品是位于堆区中的Clas
  • 算法分析与设计编程题 贪心算法

    活动安排问题 题目描述 解题代码 vector
  • 线程池以及UDP、socket通信

    目录 线程池 UDP通信 本地socket通信 线程池 什么是线程池 是一个抽象的概念 若干个线程组合到一起 形成线程池 为什么需要线程池 多线程版服务器一个客户端就需要创建一个线程 若客户端太多 显然不太合适 什么时候需要创建线程池呢 简
  • QT (C++)安装5.14

    QT 5 14 安装 介绍 C 版本 据说 这个版本是最后一个提供离线安装包的QT5 例如 qt opensource windows x86 5 14 2 exe 2 4G 最后一个可能是5 14 2 下载方式 1 在https down
  • unity开发VR的项目01——环境配置(unity2020.3)

    使用unity创建一个steam VR项目 首先要进行环境的配置 一 Steam VR插件导入 创建一个unity 3 项目 在 商店 window asset store 中搜索SteamVR Plugin 找到并导入到unity资源 也
  • STL:map

    首先包含头文件 include
  • 适合小白的详细虚拟机网络配置方法(附图)

    首先VMware的版本号需要16 0或者16 0以上版本 我用都版本应该是16 0的 有点悠久忘记了版本号 图标长这样 接下来右击镜像 点击设置 将网络适配器设置为NAT 点击编辑 再点击虚拟网络适配器 选择VMnet8 点击NAT设置 记
  • matlab矩阵处理

    2 1特殊矩阵 通用特殊矩阵 zeros函数 零矩阵 A zeros 2 3 A 0 0 0 0 0 0 zeros size reshape A 3 2 ans 0 0 0 0 0 0 ones函数 全一矩阵 eye函数 单位矩阵 ran
  • 三进制计算机_三进制会取代二进制计算机吗?

    三进制计算机 是以三进制数字系统为基础而发展的计算机 三进制计算机跟二进制计算机比 优势在哪里 三进制逻辑电路比二进制逻辑电路速度更快 可靠性更高 而且需要的设备和电能也更少 三进制代码的一个特点是对称 即相反数的一致性 因此它和二进制代码
  • express文件上传中间件Multer最新使用说明

    原文地址 http cnodejs org topic 564f32631986c7df7e92b0db 说明 multer是express官方推荐的文件上传中间件 它是在busboy的基础上开发的 目前multer的最新版本为 1 1 0