multer


前言

Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。Multer 会添加一个 body 对象 以及 file 或 files 对象 到 express 的 request 对象中。 body 对象包含表单的文本域信息,file 或 files 对象包含对象表单上传的文件信息。


一、Multer介绍

Multer 接受一个 options 对象,其中最基本的是 dest 属性,这将告诉 Multer 将上传文件保存在哪。如果你省略 options 对象,这些文件将保存在内存中,永远不会写入磁盘。一般的网页应用,只需要设置 dest 属性,如果你想在上传时进行更多的控制,你可以使用 storage 选项替代 dest。

二、上传文件不修改名字

1.安装express包

npm install express

2.安装multer包

npm install multer

3.创建multer对象,设置上传路径

Multer 接受一个 options 对象,其中最基本的是 dest 属性,这将告诉 Multer 将上传文件保存在哪。如果你省略 options 对象,这些文件将保存在内存中,永远不会写入磁盘。

const multer  = require('multer')
const upload = multer({ dest: './uploads/img' })

4.设置post访问路径

body 对象包含表单的文本域信息,file 或 files 对象包含对象表单上传的文件信息。

app.post('/uploads/img', upload.single('img'), (req, res) => {
    console.log(req.file);
    console.log(req.body)
    res.send('hello world')
})

5.完整代码

const express = require('express')
const multer = require('multer')

const app = express()

const upload = multer({ dest: './uploads/img' })

app.post('/uploads/img', upload.single('img'), (req, res) => {
    console.log(req.file);
    console.log(req.body)
    res.send('hello world')
})

app.listen(8000, () => {
    console.log('Server Running');
})

6.运行结果

{
  fieldname: 'img',
  originalname: 'KYNP8e7gdULXa628826a270eed1aacb22238632a11ea.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './uploads/img',
  filename: 'd1293b72bb956ecb9647da5b9f616d9e',
  path: 'uploads\\img\\d1293b72bb956ecb9647da5b9f616d9e',
  size: 3540862
}
[Object: null prototype] { type: '照片' }

7.由于没有设置文件名,把添加.jpg后缀即可查看图片

在这里插入图片描述

三、上传文件并修改名字

1.设置磁盘存储引擎diskStorage

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        //保存路径
        cb(null, './uploads/img')
    },
    filename: function (req, file, cb) {
        //获取文件后缀
        var extname = path.extname(file.originalname)
        //文件名
        cb(null, file.fieldname + '-' + Date.now() + extname)
    }
})
const upload = multer({ storage: storage })

2.完整代码

const express = require('express')
const multer = require('multer')
const path = require('path')

const app = express()

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        //保存路径
        cb(null, './uploads/img')
    },
    filename: function (req, file, cb) {
        //获取文件后缀
        var extname = path.extname(file.originalname)
        //文件名
        cb(null, file.fieldname + '-' + Date.now() + extname)
    }
})
const upload = multer({ storage: storage })

app.post('/uploads/img', upload.single('img'), (req, res) => {
    console.log(req.file);
    console.log(req.body)
    res.send('hello world')
})

app.listen(8000, () => {
    console.log('Server Running');
})

3.运行结果

{
  fieldname: 'img',
  originalname: 'Y7nZUsRzkHY90fbdea05a546f7d56b68de94f4cfbf88.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './uploads/img',
  filename: 'img-1641618214908.jpg',
  path: 'uploads\\img\\img-1641618214908.jpg',
  size: 6379516
}
[Object: null prototype] { type: '照片' }

4.由于设置了文件名称与后缀,所以不用重命名即可查看图片

在这里插入图片描述


总结

详细信息可查看文档 Multer中间件

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值