koa2中的文件上传与读取
上传
使用koa-multer(也可以利用其他方式,如:koa-body , koa-bodyparser)
const multer = require('koa-multer');//加载koa-multer模块 // 上传 图片 var storage = multer.diskStorage({ //文件保存路径 destination: function(req, file, cb) { cb(null, 'public/uploads/') }, //修改文件名称 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('/upload', upload.single('file'), async(ctx, next) => { ctx.body = { filename: ctx.req.file.filename //返回文件名 } })
返回给客户端,
返回一个base64格式
const fs = require('fs'); const path = require('path'); const mime = require('mime-types'); //需npm安装
router.post('/upload', upload.single('file'), async(ctx, next) => {
let filePath = path.join(__dirname, '../', ctx.req.file.path); //图片地址
file = fs.readFileSync(filePath); //读取文件
let mimeType = mime.lookup(filePath); //读取图片文件类型
ctx.set('content-type', mimeType); //设置返回类型
ctx.body = file; //返回图片
// ctx.body = {
// filename: ctx.req.file//返回文件名
// }
})
__dirname默认是当前文件夹的根目录,所以要加第二个参数'../'
返回url链接
安装koa-static
npm i koa-static
导入
const Koa = require('koa'); // 导入koa包 const serve = require('koa-static'); // 导入koa-static包 const path=require('path'); // 导入path包 用于拼接路径 const app = new Koa(); // 创建koa实例对象
使用
app.use(serve(path.join(__dirname+'/static'), // 开放的文件夹 __dirname为当前运行文件的目录 目前看来 只能开放文件夹 无法开放单独一个文件 { index:false, // 默认为true 访问的文件为index.html 可以修改为别的文件名或者false hidden:false, // 是否同意传输隐藏文件 defer:true, // 如果为true,则在返回next()之后进行服务,从而允许后续中间件先进行响应 } )) app.listen(4200);