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);

 



 
posted @ 2022-03-02 18:36  朱依漾  阅读(1155)  评论(0编辑  收藏  举报