node 上传文件 可以使用koa-body 中间件进行上传.但是一定要注意koa-body版本的问题.和异步问题.以及,form表单提交.enctype编码的书写.
const Koa = require('koa');
let app = new Koa()
const fs = require('fs');
var koaBody = require('koa-body');
const router = require('koa-router')()
const path = require('path')
const static = require('koa-static')
app.use(static(__dirname+"/public"))
app.use(koaBody({
multipart:true, // 支持文件上传
encoding:'gzip',
formidable:{
uploadDir:path.join(__dirname,'public/upload/'), // 设置文件上传目录
keepExtensions: true, // 保持文件的后缀
}
}));
router.post('/upload', async ctx => {
// let file = await ctx.request.files
console.log(await ctx.request.files)
// const reader = fs.createReadStream(file);
})
router.get('/', async ctx => {
ctx.type = 'html'
let data = fs.readFileSync('./public/index.html').toString()
ctx.body = data
})
app.use(router.routes());
app.use(router.allowedMethods())
app.use(static(__dirname + "/static"))
app.listen(3000, () => console.log('启动3000'))
<html>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input name="phtoto" type="file">
<input name="word" value="3424">
<input type="submit" value="save">
</form>
</body>
</html>
网友评论