Spring+Vue前后端传输图片-简单易上手,copy直接用


前言

前端传图片给后端的方式,是通过bsae64传输,然后后端把接收到的转化为字节流在把图片展示出来

后端传前端直接传输了字节流

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法

一、前端传后端

//参数为图片的静态文件地址
clickImg(size){
    //将图片传到后端
    this.changeBlob(size).then(res =>{
    let reader = new FileReader()
    // 读取图片,转化为blob格式是因为此方法参数为blob
    reader.readAsDataURL(res)
    // 读取完毕后的操作
    reader.onloadend = (e) => {
      // reader.result就是图片的base64字符串
      createScanCode(reader.result).then(res=>{
        //这就是个请求,后端对接好,参数用String类型接受就行
      })
    }
    })
    },
   //将地址转化为blob格式
 changeBlob(size){
    return new Promise(resolve => {
      const xhr = new XMLHttpRequest();
      xhr.open('GET',size, true);
      xhr.responseType = 'blob';
      xhr.onload = () => {
        if (xhr.status === 200) {
          resolve(xhr.response);
        }
      };
      xhr.send();
 });

二、后端接受,并返回给前端

 //用户生成二维码
    @PostMapping("/createScanCode")
    public R<?> createScanCode(@RequestBody SysScanCode sysScanCode) throws IOException, WriterException {
        //base64转字节流,然后想怎么操作都可以
        byte[] decoderBytes = Base64.getDecoder().decode(sysScanCode.getBasePic().split(",")[1]);
        //逻辑省略.....
        
        return R.ok();
    }

    //用户拿出图片
    @PostMapping("/getScanCode")
    public ResponseEntity<byte[]> getCode(@RequestBody SysScanCode user){
    	//我这边是从数据库里边直接拿出来
    	//拿的过程就省略了
        byte[] scanCode = sysScanCode.getScanCode();
        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.IMAGE_PNG);
        //把字节流直接放进去传给前端就ok
        return new ResponseEntity<>(scanCode,headers, HttpStatus.OK);
    }

三,前端接受返回

//直接一个请求,接受到后端传过来的字节流
getScancode().then(res=>{
            let blob=new Blob([res])
            //利用这个方法生成url直接拿到标签里边用
            let url =window.URL.createObjectURL(blob)
        })
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本文介绍了一个基于Spring Boot、Spring Cloud和Vue前后端分离的项目实战。这个项目是一个简单的在线商城,包含了用户注册、登录、商品展示、购物车、订单管理等功能。通过这个项目,读者可以深入理解前后端分离的架构模式和互联网应用的开发方式。 首先,文章介绍了前后端分离的基本概念和优势。前后端分离是将应用的前端和后端代码分开来开发,使得前端和后端具有独立的开发周期和技术栈,进而提高了开发效率和代码质量。同时,前后端分离还可以提供更好的用户体验和灵活性,对于互联网应用来说尤为重要。 接下来,文章介绍了项目的架构和技术栈。项目采用了Spring Boot和Spring Cloud框架来实现后端代码,采用MyBatis作为ORM框架和Redis作为缓存中间件。同时,项目还采用了Vue.js作为前端框架和Element UI组件库来实现前端页面。通过这些开源框架和组件,可以快速搭建一个前后端分离的互联网应用。 然后,文章介绍了项目的核心功能和代码实现。在用户注册和登录方面,项目采用了Spring Security框架和JWT令牌来实现用户认证和授权,保证了用户信息的安全性。在商品展示和购物车方面,项目采用了Vue.js来实现前端页面和事件处理。在订单管理方面,项目采用了MyBatis Plus来实现订单数据的持久化和分页查询。 最后,文章介绍了项目的测试和优化。通过对项目的压力测试和性能测试,文章发现项目还存在一些性能瓶颈和安全隐患,可以通过优化数据库查询、缓存配置和代码实现来提高应用的性能和安全性。 总之,这篇文章介绍了一个基于Spring Boot、Spring Cloud和Vue前后端分离的项目实战,通过实现一个在线商城的功能,展示了前后端分离的开发模式和互联网应用的开发技术栈。本文可以作为前后端分离开发的入门教程,也可以作为互联网应用开发的参考文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值