koa有个好用的生成器koa-generator ,npm install -g koa-generator 安装之
koa2 test_app生成项目,cd test_app进入目录,npm install安装依赖
1.routes下新增koaUploader.js,代码如下:
const multer = require('koa-multer');//加载koa-multer模块
const router = require('koa-router')();
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 });
//路由
router.post('/multerUpload/upload', upload.single('file'), async (ctx, next) => {
console.log("ctx.req.file.filename:"+ctx.req.file.filename)
/*ctx.body = {
filename: ctx.req.file.filename//返回文件名
} */
ctx.body = ctx.req.file.filename
})
module.exports=router
需要安装koa-multer依赖
2.app.中解决跨域问题
const cors = require('koa2-cors')
app.use(cors({
origin: function (ctx) {
if (ctx.url === '/test') {
return "*"; // 允许来自所有域名请求
}
//return 'http://localhost:8080'; // 这样就能只允许 http://localhost:8080 这个域名的请求了
return "*"
},
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
maxAge: 5,
credentials: true,
allowMethods: ['GET', 'POST', 'DELETE'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
}))
引入koaUploader
const multerUploader = require('./routes/koaUploader')
app.use(multerUploader.routes(), multerUploader.allowedMethods())
bodyparser的大小限制问题
app.use(bodyparser({
enableTypes:['json', 'form', 'text'],
formLimit: '20mb'
}))
这样就好了,前端上传和另一篇express框架的一样