1.Multer是node.js的一个中间件,用于处理multipart/form-data类型的表单数据,它主要用于上传文件。(Multer不会处理任何非multipart/form-data类型的表单数据)
2.Multer的使用:
1)Multer会添加一个body对象以及file或files对象到express的request对象中,body对象包含表单的文本域信息,file或files对象包含对象表单上传的文件信息。
2)基本使用方法:
//引入multer模块,主要应用于图片或文件的上传
const multer = require("multer");
//第一件事情 读文件 将文件放在指定的区域
//第二件事件 更改文件名称 //配置项
var storage = multer.diskStorage({
//将上传的文件存储在指定的位置
destination: function (req, file, cb) {
//浏览器在执行项目时,会从public文件夹开始,所以将图片保存在项目中时的路径是以public文件夹开始的
cb(null, './public/img')
},
//将上传的文件做名称的更改
filename: function (req, file, cb) {
//file.originalname保存着图片的名称
cb(null, Date.now()+"-"+file.originalname);//在图片名称的前面加上时间戳,以防上传同一张图片时会被覆盖
}
}) var upload = multer({ storage: storage })
//指定当前字段可以携带多少个文件
//name的属性值需要和formData.append("logo",logo[0].files[0]);中定义的属性名相同
//maxCount表示最多可以携带多少个文件
var cpUpload = upload.fields([{ name: 'logo', maxCount: 1 }]) //导出配置项
module.exports = {
cpUpload
}
3)服务器接收formData信息:
//req.files中保存着存入图片的所有信息(一个对象,键为存入服务器的key值:logo,值为一个数组),req.files.logo为一个数组,里面包含着图片的所有信息
//req.files.logo[0].path保存着图片在本项目中的绝对路径(public\\img\\1.jpg),但是需要将其转换为http://localhost:3000/public\img\1.jpg的形式
let path = req.files.logo[0].path;
var reg = /public\\img\\(.+)/;//在服务端中解析\不能使用\\,(.+)中.表示任意字符,+表示1到多个字符
var newPath = path.replace(reg,($0,$1)=>{
//$0表示匹配整个正则,$1表示reg中第一个括号里的内容,如果有$2则表示reg中的第二个括号的内容
var str = "http://localhost:3000/img/";//此时的图片是以detail.html起点开始找的,所以前面的路径应该要把public去掉,直接找到img文件夹,不然图片的路径会寻找不到
return str += $1;
})

multer中间件的更多相关文章

  1. node.js学习之post文件上传 (multer中间件)

    express为了性能考虑,采用按需加载的方式,引入各种中间件来完成需求, 平时解析post上传的数据时,是用body-parser. 但这个中间件有缺点,只能解析post的文本内容,(applica ...

  2. nodeJs学习-11 multer中间件,解析post文件,上传文件

    const express=require('express'); const bodyParser=require('body-parser'); const multer=require('mul ...

  3. express文件上传中间件Multer详解

    express文件上传中间件Multer详解 转载自:https://www.cnblogs.com/chengdabelief/p/6580874.html   Express默认并不处理HTTP请 ...

  4. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  5. Express 体验 路由、模板引擎、中间件

    http://expressjs.com/en/4x/api.html#req.method http://expressjs.com/en/guide/routing.html [Route pat ...

  6. node.js中 express + multer 处理文件上传

    multer中间件,可以很方便的结合express处理用户表单上传的文件. 一.安装multer npm install multer 二.处理单个文件上传 const express = requi ...

  7. multer详解

    Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON.二进制.字符串)数据,可以使用body-parser中间件.而文件上传(multipart/form-data请求),可以基 ...

  8. 用 Express4 写一个简单的留言板

    Knowledge Dependence:阅读文本前,你需要熟悉 Node.js 编程.Express 以及相关工具和常用中间件的使用. Node.js 以其单线程异步非阻塞的特点,越来越被广大的 W ...

  9. nodejs框架express实现登录

    目录: 访问视图 Post请求 Post请求 - body(1) Post请求 - body(2) Post登陆1 Post登陆2 页面访问控制1 页面访问控制2 访问视图 前面我们已经添加了视图模板 ...

随机推荐

  1. 20165236 《Java程序设计》第七周学习总结

    20165236 <Java程序设计>第七周学习总结 教材学习内容总结 第十一章  JDBC与MySQL数据库 1.MySQL数据库管理系统: MySQL数据库管理系统,简称MySQL,是 ...

  2. javascript篇-浅拷贝与深拷贝

    理解javascript 的浅拷贝与深拷贝,首先看一下js的数据类型: js有5种基本数据类型:undefined,null,boolean,number,string 还有一种复杂的数据类型(也叫引 ...

  3. vue 点击当前的标签,获取当前标签的value值

    点击当前的标签,获取当前标签的value值 html <p class="title" v-for="(item, i) in items" :key=& ...

  4. python 类组合

    场景:有一辆车违章需要通知到车主 定义两个类车辆类和通知类,车辆类和通知类并没有共同点,但是要通知车主这两个类就有了关联,这时候可以把这两个类组合在一起 #!/usr/bin/python3 # -* ...

  5. cocos2d-x JS 纯代码加载播放plist与png动画

    var cache = cc.spriteFrameCache; cache.addSpriteFrames(plist, png); var frames = []; for (var i = 1; ...

  6. 数据加密之DES加密

    DES加密即使用DESCryptoServiceProvider加密.DESCryptoServiceProvider在命名空间下:System.Security.Cryptography; 对称加密 ...

  7. vue中使用ckeditor

    1.第一步首先去ckeditor官网去下载editor文件,这里以ckeditor4为例 首先在index.html里引入js代码 <script type="text/javascr ...

  8. LeetCode155.最小栈

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...

  9. laravel orm

    ###多对多关系 多对多关系和之前的关系完全不一样,因为多对多关系可能出现很多冗余数据,用之前自带的表存不下了. 我们定义两个模型:Article 和 Tag,分别表示文章和标签,他们是多对多的关系. ...

  10. Unity shader学习之Alpha Blend

    通过 ShaderLab 的 AlphaBlend 能够实现真正的半透明效果. 使用 AlphaBlend 时,需要关闭深度写入 ZWrite Off,但得非常小心物体的渲染顺序, RenderQue ...