可以使用 Multer 第三方中间件来处理
图片上传
npm install --save multer
router/user.js
const {verifyToken} = require('../util/jwt') // 这个在jwt中有做封装
const multer = require('multer')
const upload = multer({dest:'public/'}) // 指定上传到本地服务器的哪个文件夹位置
const userController = require('../controller/userController') // 用户相关控制器
// 定义一个上传图片的接口路由
router
.post('/headimg',verifyToken(),upload.single('headimg'),userController.headimg)
// ...
controller/userController.js
const fs = require('fs')
const { promisify } = require('util')
const rename = promisify(fs.rename)
// 用户头像上传
exports.headimg = async (req, res) => {
console.log(req.file);
// {
// fieldname: 'headimg',
// originalname: 'mon.ica.jpg',
// encoding: '7bit',
// mimetype: 'image/jpeg',
// destination: 'public/',
// filename: '2c715b8b8c9b5786aa423ebcd9f1d983',
// path: 'public\\2c715b8b8c9b5786aa423ebcd9f1d983',
// size: 161264
// }
//获取图片格式后缀名
var fileArr = req.file.originalname.split('.')
var filetype = fileArr[fileArr.length - 1]
try {
// 默认生成的文件名没有后缀不能进行正常访问,保存的时候重命名一下加上后缀名
await rename(
'./public/' + req.file.filename,
'./public/' + req.file.filename + '.' + filetype
)
res.status(201).json({ filepath: req.file.filename + '.' + filetype })
} catch (error) {
res.status(500).json({ err: error })
}
}
视频上传
视频的需要根据业务需求进行处理,处理起来是比较麻烦的,可以借助第三方工具来进行
比如转换格式,编码问题,视频内容审核和分析,视频防下载