1、前提:
- node项目使用的koa框架
- 版本信息如下:
“dependencies”:
{
“debug”: “^4.1.1”,
“jsonwebtoken”: “^9.0.0”,
“koa”: “^2.7.0”,
“koa-bodyparser”: “^4.2.1”,
“koa-convert”: “^1.2.0”,
“koa-json”: “^2.0.2”,
“koa-jwt”: “^4.0.4”,
“koa-logger”: “^3.2.0”,
“koa-multer”: “^1.0.2”,
“koa-onerror”: “^4.1.0”,
“koa-router”: “^7.4.0”,
“koa-static”: “^5.0.0”,
“koa-views”: “^6.2.0”,
“koa2-cors”: “^2.0.6”,
“mongoose”: “^6.8.1”,
“pug”: “^2.0.3”
},2、使用koa-multer报错: Unexpected field 500
3、解决方法:文件上传的参数名称要与uploadFile.single(‘myfile’)中的“myfile”大小写一致
koa-multer上传
- 目录结构
- 下载
npm install koa-multer --save
- 功能实现 (upload.js)
const multer = require('koa-multer')
const fs = require('fs')
const path = require('path')
const router = require('koa-router')()
router.prefix('/upload')
// 注意新版本需要multer.diskStorage()写成这样使用,和老版本multer()有区别,会导致上传成功后目录没有存储生成上传文件
let upload = multer.diskStorage({
//设置文件的存储位置
destination:function(req,file,cb){
//每天文件夹
let date = new Date()
let year = date.getFullYear()
let month = date.getMonth()+1
let day = date.getDate()
let dir = "./public/uploads" + year + month + day
//判断目录是否存在
if(!fs.existsSync(dir)){
fs.mkdirSync(dir,{
recursive:true
})
}
cb(null,dir)
},
filename:function(req,file,cb){
//设置文件名称
let fileName = file.fieldname + '-' + Date.now() + path.extname(file.originalname)
cb(null,fileName)
}
})
var uploadFile = multer({ storage: upload });
//上传图片的接口
router.post('/img',uploadFile.single('myfile'), async ctx=>{
ctx.body = {
data:ctx.req.file
}
})
//生成图片链接接口
router.post('/imgUrl',uploadFile.single('myfile'), async ctx=>{
let path = ctx.req.file.path
path = ctx.origin + '' + path.replace('public','')
ctx.body = {
data:path
}
})
//模块向外抛出
module.exports = router