multer中间件

本文详细介绍了Multer,一个Node.js的中间件,专门用于处理multipart/form-data类型的表单数据,特别适合文件上传任务。文章解释了Multer如何将表单数据添加到Express的请求对象中,并提供了配置文件存储位置和重命名文件的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    })

 

转载于:https://www.cnblogs.com/Leslie-Cheung1584304774/p/10544131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值