位置: 编程技术 - 正文

express文件上传中间件Multer详解(express sendfile)

编辑:rootadmin

推荐整理分享express文件上传中间件Multer详解(express sendfile),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:express 中文文档,express怎么部署,express 文件服务器,express sendfile,express打包发布,express 文档,express sendfile,express 文档,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

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

1. multer中间件

Multer是Express官方推出的,用于Node.jsmultipart/form-data请求数据处理的中间件。

它基于busboy构建,可以高效的处理文件上传,但并不处理multipart/form-data之外的用户请求。

2. 安装

3. 使用

Multer在解析完请求体后,会向Request对象中添加一个body对象和一个file或files对象(上传多个文件时使用files对象 )。其中,body对象中包含所提交表单中的文本字段(如果有),而file(或files)对象中包含通过表单上传的文件。

基本使用示例如下:

在使用中,如果仅需要处理multipart表单中的文本字段,可以使用multer中的.single() 、 .array()或fields()方法。

如,可以像下面这样使用.array()方法:

4. multer的API

4.1 文件对象

multer解析完上传文件后,会被保存为一个包含以下字段的对象:

fieldname - 表单提交的文件名(input控件的name属性)

originalname - 文件在用户设备中的原始名称

encoding - 文件的编码类型

mimetype - 文件的Mime类型

size - 文件的大小

destination - 文件的保存目录(DiskStorage)

filename - 文件在destination中的名称(DiskStorage)

path - 上传文件的全路径(DiskStorage)

buffer - 文件对象的Buffer(MemoryStorage)

4.2 方法

multer(opts) - 创建对象

引用multer模块后,我们会获取到一个顶级方法。该方法是一个工厂函数,可以使用这个方法创建Multer对象。它接受一个选项对象,最基本的选项是dest,它告诉 Multer 文件的存储位置。如果忽略该选项,文件会被保存在内存中,并且永远不会写入硬盘中。

默认情况下,Multer会对文件进行重命令,以避免名称冲突。重命名函数,可以按需要自定义。

Multer的选项对象中可以包含以下值:

dest或storage - 文件存储位置

fileFilter - 函数,控制可上传的文件类型

limits - 上传数据限制(文件大小)

在一般的Web应用中,只有dest选项需要设置。使用示例如下:

如果需要对上传文件做更多控制,可以使用storage代替dest,Multer会将存储引擎由DiskStorage(硬盘存储)切换为MemoryStorage(内存存储)。

express文件上传中间件Multer详解(express sendfile)

创建multer对象后,我们可以使用以下实例来接收上传文件:

.single(fieldname) - 单个文件上传

接收一个名为fieldname的上传文件,所上传的文件会被保存在req.file。

.array(fieldname[, maxCount]) - 多个文件上传

接收名为fieldname的,多个上传文件数组。可选参数maxCount表示可接受的文件数量,上传文件数超出该参数指定的数据后会抛出一个错误。文件数组会被保存在req.files中。

.fields(fields) - 多个文件上传

接收通过fields指定的多个上传文件。文件数组对象会被保存在req.files中。

fields是一个包含对象的数组,对象中会包含name和maxCount两个属性:

.none() - 仅解析文本字段

仅解析文本字段。如果请求中有任何上传文件,会触发'LIMIT_UNEXPECTED_FILE'错误。这个方法与upload.fields([])类似。

.any() - 接收所有文件

接收请求中的所有文件。上传文件数组会被保存在req.files中。

4.3 选项参数

storage - 存储引擎

该选项有以下两个可选项:

DiskStorage - 硬盘存储

MemoryStorage - 内存存储

.diskStorage(obj)与硬盘存储

硬盘存储引擎提供了将文件存储到磁盘的完全控制:

.diskStorage()方法提供了文件存储位置控制权限,该方法接收一个对象参数,其中包含两destination和filename两个属性。

destination用于设置文件的存储目录,可以是一个函数或字符串。若未提供该参数,将使用系统的临时目录。

filename用于设置文件名。若未提供该参数,将使用一个随机字符串,且文件名中不包含扩展名。

.memoryStorage()与内存存储

内存存储引擎会以Buffer的形式将文件保存在内存中。该方法没有任何参数:

limits - 文件尺寸

该选项用于设置文件尺寸,Multer 会将这个对象传递至busboy中。limits对象中可以包含以下可选值:

fieldNameSize - 字段名最大尺寸。默认值: bytes

fieldSize - 字段值最大尺寸。默认值:1MB

fields - 非文件字段的最大数量。默认值:Infinity

fileSize - multipart 表单中,文件的最大尺寸。默认值:Infinity

files - multipart 表单中,文件最大数量。默认值:Infinity

parts - multipart 表单中,最大组件(fields+files)数量。默认值:Infinity

headerPairs - 默认值:

fileFilter - 文件筛选

fileFilter用于控制要哪些文件是可接受的,哪些是要被拒绝的。使用形式如下:

总结

标签: express sendfile

本文链接地址:https://www.jiuchutong.com/biancheng/370825.html 转载请保留说明!

上一篇:Node.js Sequelize如何实现数据库的读写分离

下一篇:Yarn的安装与使用详细介绍(yarn使用教程)

  • 退个税手续费如何申报
  • 销售折让开具红字
  • 调整汇算清缴利息怎么算
  • 企业资产折旧抵扣所得税
  • 结转损益类账户余额
  • 应收账款计提坏账比例
  • 购物中心联营扣点
  • 社保逾期滞纳金可以免除吗?
  • 劳务费的专用发票有哪些
  • 健身房开业前买的瑜伽垫怎么做账?
  • 以前年度漏记一笔短期借款但本金利息支出记账了
  • 库存商品做账
  • 企业所得税收入是什么意思
  • 房产税怎么计算的
  • 开票信息里面的电话号码怎么来的?
  • 如何查发票真伪发票查询
  • 外购商品领用会计分录
  • 跨年会计分录错误
  • 税控盘额度
  • 2019一般纳税人和小规模纳税人的区别
  • 酒店客房收入怎么算
  • 电脑主板上的电池没电了会怎么样
  • 多结转成本会导致什么
  • 研发费加计扣除申报表怎么填
  • 广告公司车身广告
  • quicktimeplayer.exe - quicktimeplayer是什么进程 有什么用
  • bug is
  • 增值税留抵退税政策2023
  • 铁路运输企业所得税优惠
  • 怎么开通公众号微信公众平台
  • 应收股利的主要特点
  • 企业生产经营过程中的在产品属于
  • php ladp
  • 流动资产占资产总额的比率叫什么
  • 非关联企业借款利息扣除
  • thinkphp 模板标签
  • edge 状态栏
  • 成本价低于现价 应该卖吗
  • 社保和公积金个人缴纳在哪里查看
  • 微信小程序设计规范(官方)文档
  • 会计在账本上怎么记账
  • 帝国cms灵动标签下拉框
  • 出口退税转内销的损失
  • 金蝶财务软件怎么备份
  • MySQL中create table as 与like的区别分析
  • 私车公用的汽油费计入哪个科目
  • 进出口贸易出纳主要做什么
  • 企业找审计是为了什么
  • 应交税费应交增值税进项税额在借方
  • 贴现法付息实际利率
  • 月末结转后应交税费应交增值税一般无余额
  • 纳税期限与缴库期限不符
  • 建筑施工企业在12个月内第三次发生生产安全事故的
  • 费用分摊怎么开口说好
  • 抵扣认证的发票怎么冲红
  • 每个月结转损益会计分录
  • 费用报销银行转账用途怎么写
  • 原始凭证的审核和填制
  • 原始凭证分割单怎么填写
  • 两套账的会计被判刑吗
  • 设置会计账簿应当遵循的基本原则有
  • ubuntu设置u盘启动项
  • 获取windows的最新信息
  • win7双硬盘双系统
  • win10预览版和正式版区别
  • linux wc命令如何实现
  • centos配置网络地址命令
  • 系统恢复 win10
  • linux怎样过滤一个关键字
  • windows万能wifi
  • win7 win8.1双系统安装教程
  • ie浏览器怎么设置打开网页在同一个窗口
  • linux怎么全盘备份
  • opencv人脸识别模型训练
  • unityshader
  • 噩梦 1-4
  • animate怎么整个图层移动
  • 税控盘开票软件下载官网
  • 国家税务总局关于进一步优化营改增纳税服务工作的通知
  • 北京车位过户手续费多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设