vue+koa使用base64将图片存储在mongodb数据库中,并在页面加载显示图片

31 篇文章 4 订阅
14 篇文章 1 订阅

前端: 

<template>
  <div>
    <input @change="uploadPhoto" type="file" />
    <img :src="base64" style="width:100px;height:100px" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      base64: ""
    };
  },
  methods: {
    uploadPhoto(e) {
      let file = e.target.files[0];
      let fileFormat = file.name.split(".");
      let filename =
        fileFormat[0] + Date.now() + "." + fileFormat[fileFormat.length - 1];
      let filesize = file.size;

      let reader = new FileReader();
      reader.readAsDataURL(file);

      reader.onload = async e => {
        let imgcode = e.target.result;
        let {
          data: { base64 }
        } = await this.$axios.post("/api/test/uploadimg", {
          filename: filename,
          filesize: filesize,
          base64: imgcode
        });
        this.base64 = base64;
        console.log("图片上传成功!");
      };
    }
  }
};
</script>

服务端routes/test.js

const router = require('koa-router')()
const TestModel = require('../model/test.js')

router.prefix('/test')

router.post('/uploadimg', async (ctx, next) => {
    let {
        filename,
        filesize,
        base64
    } = ctx.request.body
    const result = await TestModel.create({
        filename: filename,
        filesize: filesize,
        base64: base64
    })

    if (result) {
        let { filename, filesize, base64 } = result;
        ctx.body = {
            message: "成功!",
            code: 1,
            base64
        }
    } else {
        ctx.body = {
            message: "失败le "
        }
        console.log("失败了")
    }
})

module.exports = router

model/test.js

const mongoose = require('../db.js')
let TestSchema = mongoose.Schema({
    filename: { type: String },
    filesize: { type: Number },
    base64: { type: String }
})

// 创建模型对象
// 第一个参数与集合对应,第二个对象指定约束对象实例
module.exports = mongoose.model('Test', TestSchema, "test")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值