const Koa = require('koa');
const app = new Koa();
const cache = require('koa-static');
const router =require('koa-router')();
const path = require('path') // 原生path模块
var bodyParser = require('koa-bodyparser');//对于POST请求的处理,koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中。他要和koa-multer结合使用上传图片,但是koa-body一个中间件就能上传文件。
const fs = require("fs");
const koaBody = require('koa-body')({
multipart: true, // 允许解析'multipart/form-data'类型的文件
formidable: {
maxFileSize: 200*1024*1024, // 设置上传文件大小最大限制,默认2M
}
})
// 新建文件夹
fs.readdir(__dirname+"/test/",function (err,files){
if(err){
fs.mkdir(__dirname+"/test/",function(err){
if (err) {
return console.error(err);
}
console.log("目录创建成功。");
})
}else{
console.log("已经存在文件夹")
}
})
// 上传图片接口
router.post('/images', koaBody,async (ctx) => {
console.log(ctx.request.body)
var name = ctx.request.body.name;
var imgBase64 = ctx.request.body.imgBase64;
// 去掉图片base64码前面部分data:image/png;base64,
var resultBase64=imgBase64.replace(/^data:image\/\w+;base64,/,"");
var path=`test/${name}.jpg`;
var imgBuffer=new Buffer(resultBase64,'base64');
fs.writeFile(path,imgBuffer,function(err){
if(err){
console.log(err)
}else{
console.log("写入图片成功!")
}
})
ctx.body = {
code: 200,
text: '图片写入成功',
path: `http://localhost:3000/test/${name}`
}
})
app.use(cache('src'));//静态资源目录
app.use(cache('test'));//http://localhost:3000/hello.jpg 能查看到上传的图片
app
.use(router.routes())
.use(router.allowedMethods())
app.listen(3000, () => {
console.log(`server is running at 3000 port`)
});
koa实现图片转码、上传服务器
最新推荐文章于 2023-02-16 10:28:46 发布