Springboot 和 VUE 前后端分离的数据交互

需求描述:点击VUE页面上的一个点,传回d[3]值代表图片序号,向后端发送请求,后端接收序号,找到对应图片后转换成流,再把流以图片形式传回给VUE。

VUE中的点击事件:

.on("click", d => {
              this.getImg("/getImg",d[3]).then(res =>{
                console.log(res);
                this.stateSrc = window.URL.createObjectURL(res.data);
              })
            })
getImg(url, query){
        return request({
          url:url,
          params:{
            path_index:query  //注意参数名应和controller中的@RequestParam相同
          },
          responseType:'blob'
        })
      },

其中request.js (写完之后需要 npm i 重构一下项目)

import axios from 'axios'

export function request(config){
    const instancel = axios.create({
        baseURL:'http://localhost:8088', //修改为springboot项目的端口号
        timeout:10000
    })

    return instancel(config)
}

Springboot -Controller

@CrossOrigin(value = "*", allowCredentials = "true") //解决跨域问题
@Controller
public class BreakoutNoFrameskipController {

    @RequestMapping("/demo")
    public String show(){
        return "test";
    }

    @Value("${file.uploadFolder}")
    private String uploadFolder; //本地地址路径

    @GetMapping("/getImg")
    @ResponseBody
    public void getImage(@RequestParam String path_index,HttpServletResponse rsp) throws Exception{

        System.out.println("path_index: "+path_index); //得到这是第几张图片
        byte[] imageContent ;
        String path = uploadFolder+path_index+".png";
        imageContent = fileToByte(new File(path));
        rsp.setHeader("Content-Type", "image/png");
        rsp.getOutputStream().write(imageContent);
    }

    //把图片转换成流
    public static byte[] fileToByte(File img) throws Exception {
        byte[] bytes = null;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            BufferedImage bi;
            bi = ImageIO.read(img);
            ImageIO.write(bi, "png", baos);
            bytes = baos.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            baos.close();
        }
        return bytes;
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值