当前位置: 首页 > news >正文

SpringBoot+VUE(Ant Design Vue)实现图片下载预览功能

目录

背景

1.后端实现下载接口

2.前端请求实现

第一步:导入api

第二步:请求接口

3.前端展示实现

4.实现效果展示

5.总结


背景

这段时间通过SpringBoot+VUE(Ant Design Vue)框架做了一个项目,但是在图片下载,展示的时候在网上搜了好多方法都解决不了,最后发现虽然图片能下载了,但是没有正确赋值给前端字段,所以今天把这个坑分享出来,以免各位踩坑!

1.后端实现下载接口

以下代码是前端请求图片地址,需要传入一个图片的唯一标识符

@RequestMapping(value = "/download", method = RequestMethod.GET)
@Transactional
public void download(Thing thing, HttpServletResponse response) throws IOException {
   String fileUUID = thing.cover;
   if(StringUtils.isEmpty(fileUUID)) {
      return;
   }
   // 根据文件的唯一标识码获取文件
   File destFile = new File(uploadPath + File.separator + "image" + File.separator + fileUUID);
   // 设置输出流的格式
   ServletOutputStream os = response.getOutputStream();
   response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileUUID, "UTF-8"));
   response.setContentType("image/jpeg");

   // 读取文件的字节流
   os.write(FileUtil.readBytes(destFile));
   os.flush();
   os.close();
}

2.前端请求实现

以下是代码部分,

第一步:导入api

import { downloadApi } from '/@/api/thing';

第二步:请求接口

需要注意的是前端请求代码需要放在请求列表for循环里面

await downloadApi({
    cover: item.cover,
})
.then((res) => {
    item.cover = res.data;
    const reader = new FileReader();
    reader.onload = (e) => {
        this.cover = e.target.result; // 将base64编码的图片数据存储在Vue组件的data属性中
    };
    reader.readAsDataURL(new Blob([res.data], { type: 'image/jpeg' })); // 根据实际情况调整MIME类型
})
.catch((err) => {
    console.log(err);
});

item.cover = BASE_URL + '/api/thing/download?cover=' + item.cover;

3.前端展示实现

这一步是需要在table里面赋值属性

<template v-if="column.key === 'cover'">
    <img :src="record.cover" style="width: 50px; height: 50px" />
</template>

4.实现效果展示

5.总结

以上步骤就是vue前端通过请求后端二进制流预览图片的全过程,上面这个方法不止图片,视频都可以用这种方法进行预览。

喜欢的小伙伴请留下一个免费的点赞,关注,评论吧!

相关文章:

  • Java 大视界 -- Java 大数据在智能安防周界防范与入侵预警中的应用(148)
  • C++11之包装器
  • TensorFlow快速介绍
  • javaweb开发以及部署
  • Winform在工控行业对比Wpf的优势?
  • C语言【文件操作】详解中
  • ASP.NET Web的 Razor Pages应用,配置热重载,解决.NET Core MVC 页面在更改后不刷新
  • 细说卫星导航:测距定位原理
  • Linux-Ubuntu 系统学习笔记 | 从入门到实战
  • C# 调用 VITS,推理模型 将文字转wav音频调试 -数字人分支
  • Leetcode 刷题笔记1 图论part04
  • [思考记录]两则:宏观视角、理想化
  • #echarts#折线图#饼图
  • @JsonSerialize注解
  • 机器臂运动控制算法工程师面试
  • LVGL常用功能备忘
  • STM32基础教程——定时器
  • 天梯赛 L2-013 红色警报
  • 2025海外华文新媒体高级人才研修班在广西南宁举办
  • Java实体类(Javabean)-编程规范
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • “铁血防守”制造8年最快丢球,恐惧中的阿森纳什么也做不了
  • 特朗普执政百日集会吹嘘政绩,美国消费者信心指数跌至疫情以来最低
  • 俄外长:俄将在不损害伙伴关系前提下发展对美关系
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 杜前任宁波中院代理院长,卸任宁波海事法院院长