技术分享
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)

鑫生活

总有人要赢,为什么不能是我
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)
  • mongoose基础
  • Multer文件上传中间件的使用
    • 安装
    • 使用
      • 介绍
      • 基本使用
      • 高级用法
  • 后端
coderly
2020-02-02

Multer文件上传中间件的使用

# Multer 文件上传中间件的使用

# 安装

npm install --save multer
1

# 使用

# 介绍

  1. Multer 是一个 node.js 中间件,用于处理  multipart/form-data  类型的表单数据,它主要用于上传文件。它是写在  busboy  之上非常高效。
    【划重点】:
    Multer 不会处理任何非  multipart/form-data  类型的表单数据。这句话很重要,如果使用表单提交,必须设置,如果不设置,将获取不到request中的file
<!-- 添加enctype才有效 -->
<form action="" method="POST" enctype="multipart/form-data"></form>
1
2
  1. Multer 会添加一个  body  对象 以及  file  或  files  对象 到 express 的  request  对象中。 body  对象包含表单的文本域信息,file  或  files  对象包含对象表单上传的文件信息。

# 基本使用

var express = require('express')
var multer = require('multer')
var router = new express.Router()
// dest指明上传的文件保存的路径
var upload = multer({
  dest: '/public/uploads',
})
router.post('/upload', upload.any(), function(req, res, next) {
  console.log(req.files) //req.file文件的具体信息
  console.log(req.files[0].originalname) //上传文件的名字信息
  res.json({
    status: 0,
    data: req.files[0].originalname,
    count: 1,
    msg: '上传成功',
  })
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 该方法分析

  1. 上传的路径写在dest里面
  2. 上传的文件名字不能自己改变,且为一连串数字字母的组合
  3. 如果要对上传的文件进行重命名,可以通过读出该文件,然后再写入另一个新文件,你就可以对新文件重命名。

# 高级用法

# 借助DiskStorage磁盘存储引擎









 
 
 
 













var express = require('express')
var multer = require('multer')
var router = new express.Router()
var storage = multer.diskStorage({
  destination: function(req, file, cb) {
    // 这里指明上传存储在'/public/uploads'下
    cb(null, '/public/uploads')
  },
  filename: function(req, file, cb) {
    // 该方法返回上传的文件名+当前时间作为上传后的文件的名字
    cb(null, file.fieldname + '-' + Date.now())
  },
})
var upload = multer({ storage: storage })
router.post('/upload', upload.any(), function(req, res, next) {
  console.log(req.files) //req.file文件的具体信息
  console.log(req.files[0].originalname) //上传文件的名字信息
  res.json({
    status: 0,
    data: req.files[0].originalname,
    count: 1,
    msg: '上传成功',
  })
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

【注意】:

  1. destination  是用来确定上传的文件应该存储在哪个文件夹中。也可以提供一个  string (例如'/public/uploads')。如果没有设置  destination,则使用操作系统默认的临时文件夹。
  2. 如果你提供的  destination  是一个函数,你需要负责创建文件夹。当提供一个字符串,multer 将确保这个文件夹是你创建的。
  3. filename  用于确定文件夹中的文件名的确定。 如果没有设置  filename,每个文件将设置为一个随机文件名,并且是没有扩展名的。
#Node.js#Express
上次更新: 2021/09/13, 15:11:59
mongoose基础

← mongoose基础

最近更新
01
css
09-13
02
html
09-13
03
README
09-13
更多文章>
Theme by Vdoing | Copyright © 2021-2021 coderly | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式