node中multer是什么意思
时间:2022-04-16 [网络编程]作者:fabuyuan 浏览:6 次
在node中,multer是一个用于处理“multipart/form-data”类型数据格式的中间件,主要用于上传文件;该中间件在解析完请求体后,会向Request对象中添加一个body对象和一个file或files对象。
本文操作环境:Windows10系统、nodejs 12.19.0版、Dell G3电脑。
node中multer是什么意思
Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。它是写在 busboy 之上非常高效。
注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据
Multer在解析完请求体后,会向Request对象中添加一个body对象和一个file或files对象(上传多个文件时使用files对象 )。
其中,body对象中包含所提交表单中的文本字段(如果有),而file(或files)对象中包含通过表单上传的文件。
Tips:multipart/form-data是用来指定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或者mp3等等
const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ //保存路径 destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') //注意这里的文件路径,不是相对路径,直接填写从项目根路径开始写就行了 }, //保存在 destination 中的文件名 filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }) const upload = multer({ storage: storage }) app.post('/profile', upload.single('avatar'), function (req, res, next) { // req.file 是 `avatar` 文件的信息 // req.body 将具有文本域数据,如果存在的话 }) app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { // req.files 是 `photos` 文件数组的信息 // req.body 将具有文本域数据,如果存在的话 }) const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) app.post('/cool-profile', cpUpload, function (req, res, next) { // req.files 是一个对象 (String -> Array) 键是文件名,值是文件数组 // 例如: // req.files['avatar'][0] -> File // req.files['gallery'] -> Array // req.body 将具有文本域数据,如果存在的话 })
multer(options)
Multer 接受一个 options 对象,其中最基本的是 dest 属性,这将告诉 Multer 将上传文件保存在哪。如果你省略 options 对象,这些文件将保存在内存中,永远不会写入磁盘。
通常,一般的网页应用,只需要设置 dest 属性,像这样:
const upload = multer({ dest: 'uploads/' })
如果你想在上传时进行更多的控制,你可以使用 storage 选项替代 dest。Multer 具有 DiskStorage 和 MemoryStorage 两个存储引擎; 另外还可以从第三方获得更多可用的引擎。
推荐学习:《nodejs视频教程》
以上就是node中multer是什么意思的详细内容,更多请关注站长家园其它相关文章!
本文标签: nodejs
转载请注明来源:node中multer是什么意思
本文永久链接地址:https://www.adminjie.com/post/11240.html
免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!
版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。
更多精彩内容
- VUE中V-IF条件判断改变元素的样式操作
- Discuz如何解决安装时报错run_sql_error
- 低版本VS项目在VS2019无法正常编译的问题
- PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
- Oracle数据库的实例/表空间/用户/表之间关系简单讲解
- RSA2是啥?PHP-RSA2签名验证怎么实现?
- 华为dubal20是什么型号
- ana an00华为是什么型号
- 电脑显示信号线无连接是什么意思
- app是什么应用程序的简称
- html5的标题标记一共有几个等级
- html5中onclick是什么意思
- 小程序大小超限除了分包还能怎么做?如何避免和解决大小限制?
- vivov1818a是什么手机型号
- 超清视效是什么意思

- 最新文章
-
-
php怎么验证字符串第一个字符是不是指定值
3种方法:1、用“strpos($str,"字符")==0”语句,判断指定值是否为第一个字符,若返回true则是。2、用“$str[0]=="字符"”语句,若返...
-
php怎么求数组中某个数的下标
求下标的两种方法:1、用array_search(),语法“array_search(指定数,$arr)”,会返回对应键名(下标);2、用array_keys(...
-
深入了解Node的模块机制,聊聊模块实现流程
本篇文章带大家了解一下CommonJs规范和Node的模块机制,介绍一下Node实现CommonJs规范的基本流程,希望对大家有所帮助!在CommonJs规范提...
-
PHP是如何存储变量的?zval结构体你了解吗?
PHP源码中的zval在PHP中定义一个变量是不需要声明类型的,一开始给变量$a赋予一个整型值,后面又可以轻而易举地将其改变为其他类型。那在PHP...
-
oracle怎么转移表的表空间
oracle中,可利用“altertable”语句转移表的表空间,该语句可修改表的数据,与“movetablespace”配合使用就可移动表的表空间,语法为...
-
- 热门文章
-
-
VUE中V-IF条件判断改变元素的样式操作
这篇文章主要介绍了VUE中V-IF条件判断改变元素的样式操作,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧...
-
Discuz如何解决安装时报错run_sql_error
问题环境VMware虚拟机Centos7.3PHP7.0MySQL8.0NGINX1.14Discuz3.4问题还原本地环境为PHP5.6+MySQL5.6在安...
-
低版本VS项目在VS2019无法正常编译的问题
低版本VS项目在VS2019无法正常编译的问题这里指的编译并不准确,只是为了方便说明。后有(未安装),201?...
-
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
实现原理使用redis链表来做,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行,推荐使用。实现步骤第一步,先将商品库存入队列/**.trigge...
-
Oracle数据库的实例/表空间/用户/表之间关系简单讲解
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。我们用这些高级权限账号...
-