multer中间件
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中间件的更多相关文章
- node.js学习之post文件上传 (multer中间件)
express为了性能考虑,采用按需加载的方式,引入各种中间件来完成需求, 平时解析post上传的数据时,是用body-parser. 但这个中间件有缺点,只能解析post的文本内容,(applica ...
- nodeJs学习-11 multer中间件,解析post文件,上传文件
const express=require('express'); const bodyParser=require('body-parser'); const multer=require('mul ...
- express文件上传中间件Multer详解
express文件上传中间件Multer详解 转载自:https://www.cnblogs.com/chengdabelief/p/6580874.html Express默认并不处理HTTP请 ...
- 使用express+multer实现node中的图片上传
使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...
- Express 体验 路由、模板引擎、中间件
http://expressjs.com/en/4x/api.html#req.method http://expressjs.com/en/guide/routing.html [Route pat ...
- node.js中 express + multer 处理文件上传
multer中间件,可以很方便的结合express处理用户表单上传的文件. 一.安装multer npm install multer 二.处理单个文件上传 const express = requi ...
- multer详解
Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON.二进制.字符串)数据,可以使用body-parser中间件.而文件上传(multipart/form-data请求),可以基 ...
- 用 Express4 写一个简单的留言板
Knowledge Dependence:阅读文本前,你需要熟悉 Node.js 编程.Express 以及相关工具和常用中间件的使用. Node.js 以其单线程异步非阻塞的特点,越来越被广大的 W ...
- nodejs框架express实现登录
目录: 访问视图 Post请求 Post请求 - body(1) Post请求 - body(2) Post登陆1 Post登陆2 页面访问控制1 页面访问控制2 访问视图 前面我们已经添加了视图模板 ...
随机推荐
- Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch6'.
VS 里面的Interop.Shell32.dll(1.0) 这个版本太低了,需要高版本的(我使用的是1.2.107.0) 具体下载地址 自己找吧
- SpringMVC在使用Jackson2时关于日期类型格式化的问题
SpringMVC在使用Jackson2时关于日期类型格式化的问题 如果无效,那么使用 @DateTimeFormat(pattern = "yyyy-MM-dd")
- Redis入门到高可用(三)——通用命令
通用命令 参考 http://redisdoc.com/index.html 1. keys #查看所有key 时间复杂度:O(N), N 为数据库中 key 的数量. 127.0.0.1:637 ...
- 20165236郭金涛 预备作业3 Linux安装及学习
我在Linux安装过程遇到的问题: 1.“不能为虚拟电脑XX打开一个新任务”: 出现这种情况是电脑没有开启blos,解决方法是:开机进入联想界面的时候,直接按F2可以快速进入选择开启blos. Lin ...
- LigerUi自动检索输入
var availableTags = [ "ActionScript", "AppleScript", "Asp", "BASI ...
- golang 的 buffered channel 及 unbuffered channel
The channel is divided into two categories: unbuffered and buffered. (1) Unbuffered channelFor unbuf ...
- Spark:java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!
Spark多任务提交运行时候报错. java.net.BindException: Address already retries! at sun.nio.ch.Net.bind0(Native Me ...
- python 获取SLB信息 更换证书
首先安装阿里云SDK pip install aliyun-python-sdk-core pip install aliyun-python-sdk-slb 可以配合jenkins传递参数 #获取s ...
- Ext.create细节分析
var win1 = Ext.create('Ext.window.Window', { //实例化方法四 : 使用 完整的 Extjs 类名 width: 800, title: 'define t ...
- [LeetCode] 868. Binary Gap_Easy
Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...