【Node.js】使用Multer的文件上传下载

上回说到,使用Express框架搭建起了简易的后端,并可以使用它接受各种形式的参数。

这一节,我们来解决一个web开发中非常基础但也是非常重要的需求——文件上传与下载问题

文件上传

上传一个文件,使用的http的请求方法是post,请求头中内容类型(Content-type)为multipart/form-data。现在为了测试后台接口,我们使用postman进行post请求发送:

在这里插入图片描述

  • 更改请求方法
  • 选中Body
  • 选择form-data格式
  • 下方参数处可以修改参数类型为文件

在这里插入图片描述

Multer中间件

以http请求发送出去的文件,会以二进制流的格式通过网络到达服务器,但显然直接处理它会很不方便,尤其是在一个请求中包含多个文件以及其他参数时。

实际上,我们更希望可以将上传的文件在进入请求处理前被接受并缓存并将有关他的信息封装在一个对象之中便于后续的操作。

那么今天的主角——Multer中间件就可以帮助我们很好的完成这些需求。它可以将multipart/form-data类型请求中的图片接收并进行过滤,封装,便于在业务处理时使用。

(更详细介绍可以查看Multer的NPM官网文档,下文内容大多参考自该文档)

首先,我们来安装Multer并在代码中引用他:

var multer = require('multer')

multer配置

在使用之前,需要生成一个multer的实例并对其进行配置:

var upload = multer({
   
	dest:'./temp'
})

upload是根据配置产生的multer对象,在之后的请求处理中使用它。配置是以对象的形式传入的,最常用的就是这个dest,表示文件缓存的磁盘地址。配置后,接受的文件会直接写在磁盘中充当临时文件。如果没有配置这个内容,则回将文件以buffer的形式保存在内存中。

除了dest,还有其他可配置选项,不过通常应用中,我们只需配置dest:
在这里插入图片描述
完整代码:

var multer = require('multer')

var upload = multer({
   
	dest:'./temp'
})

单文件

传递单文件时,需要在请求处理中添加upload.single(fileName)中间件,例如:

app.post('/file/singleFile',upload.single('file'),(
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值