Express框架入门(三)结合 multer 上传图片

本文介绍了如何在 Express 中结合 Multer 模块上传图片。Multer 是一个专门处理 multipart/form-data 表单数据的 Node.js 中间件,适合文件上传。文章详细讲解了 Multer 的安装、配置、按日期生成上传目录以及多文件上传,并提供了相关代码示例,包括 app.js、admin.js、nav.js 和 user.js 等路由文件以及 views 目录下的 HTML 文件。
摘要由CSDN通过智能技术生成

一、 Multer 模块介绍

Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。它是写在 busboy 之上非常高效。

注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。

二、 Express 上传文件模块 multer 的使用

1. 安装 multer

npm install --save multer

2. 引入配置 multer 模块

var multer = require('multer') 
//配置 
var storage = multer.diskStorage({
    
//文件保存路径 注意路径必须存在
	destination: function (req, file, cb) {
    
		cb(null, 'public/upload/') 
	},
	//修改文件名称 
	filename: function (req, file, cb) {
    
		var fileFormat = (file.originalname).split(".");
		cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]); 
	} 
})
var upload = multer({
    storage: storage })

3.使用 multer

router.post('/doAdd', upload.single("pic"), function (req, res) {
   
	res.send({
    
		file: req.file,//返回文件名 
		body: req.body 
	}) 
});

三、 Express 按照日期生成上传文件目录

var express = require('express'); 
var multer = require('multer') 
var sd = require('silly-datetime'); 
var path = require('path'); 
var mkdirp = require('mkdirp'); 
var router = express.Router(); 
//配置 
var storage = multer.diskStorage({
    
	//文件保存路径 注意路径必须存在 
	destination: async (req, file, cb)=> {
    
		// 1、获取当前日期 以及当前的时间戳 
		let day = sd.format(new Date(), 'YYYYMMDD');
		//2、创建图片保存的路径 
		let dir = path.join('public/upload/',day) 
		//3、异步创建目录 
		await mkdirp(dir); 
		cb(null, dir) 
	},
	//修改文件名称 
	filename: function (req, file, cb) {
    
		var fileFormat = (file.originalname).split(".");
		cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]); 
	} 
})
var upload = multer({
    storage: storage })
router.post('/doAdd', upload.single("pic"), function (req, res) {
   
	res.send({
    
		file: req.file,//返回文件名 
		body: req.body 
	}) 
}); 
module.exports = router;

四、 多文件上传

var cpUpload = upload.fields([{
    name: 'avatar', maxCount: 1 }, {
    name: 'gallery', maxCount: 8 }]) 
app.post('/doAdd', cpUpload, function (req, res, next) {
    })

五、综合案例

在这里插入图片描述
app.js

const express = require("express");
const bodyParser = require('body-parser')
const ejs = require("ejs");
//引入外部模块
const admin = require("./routes/admin")
const index = require("./routes/index")
const api = require("./routes/api")

const app = express()
//配置模板引擎
app.engine("html",ejs.__express)
app.set(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值