美文网首页
利用Nodejs 搭建静态图片服务器

利用Nodejs 搭建静态图片服务器

作者: 空腹无才 | 来源:发表于2020-04-28 16:14 被阅读0次

    安装插件

    koa

    npm install -s koa
    

    koa-router

    npm install -s koa-router
    

    koa-body

    npm install -s koa-body
    

    我是习惯使用这些插件所以才安装的,其中重要得就是 koa-body 是用来解析form-data数据得。

    实现代码

    const Koa = require('koa');
    const body = require("koa-body");
    const router = require('koa-router')();
    const utility = require("utility");  //用于md5 加密
    const fs = require('fs');
    const os = require('os');
    
    const app = new Koa();
    
    //用于解析 formData
    router.use(body({multipart: true,}));
    
    
    // 保存图片
    router.post('/savaImage', (ctx, next) => {
        //获取 multipart 中 formData 文件信息
        let data = ctx.request.files.img; 
        //创建图片名称
        let fileName =  utility.md5 ((new Date()).getTime() + " ");
    
        const render = fs.createReadStream(data.path);
        let filePath = 'public/images/' + fileName + '.'+  data.name.split('.')[1];
    
        // 创建写入流
        const upStream = fs.createWriteStream(filePath);
        render.pipe(upStream);
    
        let address = os.networkInterfaces().WLAN[1].address;
        filePath = "http://" + address + ":3000/" + filePath;
    
        ctx.body = filePath
    });
    
    // 动态路由
    // 获取图片 将图片转化成二进制发送给前端
    router.get("/public/images/:imgName", (ctx,next) => {
        let path = ctx.url.slice(1);
        let data = fs.readFileSync(`${path}`,'binary');
    
        ctx.res.writeHead('200');
        ctx.res.write(data, 'binary');
        ctx.res.end();
    });
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    app.listen(3000, () => {
        console.log("server run: http://127.0.0.1:3000");
    });
    

    相关文章

      网友评论

          本文标题:利用Nodejs 搭建静态图片服务器

          本文链接:https://www.haomeiwen.com/subject/ovtbwhtx.html