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

news/2025/3/30 22:37:16/

目录

背景

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前端通过请求后端二进制流预览图片的全过程,上面这个方法不止图片,视频都可以用这种方法进行预览。

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

文章来源:https://blog.csdn.net/k_love1219/article/details/146438101
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1583312.html

相关文章

「0基础学爬虫」爬虫基础之抓包工具的使用

抓包工具概述 抓包工具&#xff0c;顾名思义&#xff0c;就是抓取网络数据包信息的工具。抓包工具最初主要应用于测试工作中&#xff0c;通过抓包工具查看网络数据包&#xff0c;并进行分析&#xff0c;来定位数据传输中的问题。随着不断发展&#xff0c;抓包工具的功能不断拓…

CentOS 7 Yum 源配置与使用手册

一、仅下载 RPM 包而不安装 1. 使用 yumdownloader sudo yum install -y yum-utils yumdownloader --destdir/tmp --resolve httpd--destdir: 指定下载目录 --resolve: 同时下载依赖包 2. 使用 yum-plugin-downloadonly 安装插件 sudo yum install -y yum-plugin-downlo…

MATLAB语言的测试报告生成

MATLAB语言的测试报告生成 引言 在现代软件开发中&#xff0c;测试是确保软件质量和可靠性的关键环节。随着技术的发展和软件项目的复杂性增加&#xff0c;测试的方式和工具也不断演进。MATLAB作为一种强大的数学计算和仿真工具&#xff0c;广泛应用于工程、科学和金融领域&a…

《基于计算机视觉的步态识别方法研究》开题报告

个人主页:@大数据蟒行探索者 一、课题的研究现状 国外研究现状:国外在步态识别技术的研究方面起步较早,已经取得了显著的进展。许多高校和研究机构都投入了大量的资源进行步态识别技术的研究和开发。目前,国外的步态识别技术已经广泛应用于安防、生物识别、医疗健康等领域…

手机录视频风噪太大?华为Pura X“AI降风噪“太硬核了

你是否也在用手机录像时&#xff0c;比如大海海浪、阅览群山、空旷的原野的时候&#xff0c;呼啸的风总是能沦为刺耳的噪音&#xff0c;让精心构思的镜头&#xff0c;最后因为呼啸的风声最终成为“灾难现场”。传统的解决方式往往陷入两难&#xff1a;物理防风罩影响收音指向性…

搜广推校招面经五十七

虾皮推荐算法 一、AUC有什么缺陷&#xff0c;有更合适的指标去解决这个问题 1.1. AUC 的缺陷 尽管 AUC 是一个广泛使用的指标&#xff0c;但它存在以下缺陷&#xff1a; 1.1.1. 无法反映真实的概率分布 AUC 仅考虑 正负样本的相对排序&#xff0c;不关心预测概率的具体数值…

最大异或对 The XOR Largest Pair

题目来自洛谷网站&#xff1a; 思路&#xff1a; 两个循环时间复杂度太高了&#xff0c;会超时。 我们可以先将读入的数字&#xff0c;插入到字典树中&#xff0c;从高位到低位。对每个数查询的时候&#xff0c;题目要求是最大的异或对&#xff0c;所以我们选择相反的路径&am…

Spring MVC:关于@PostMapping和@GetMapping的使用场景、区别及核心要点的总结

关于 PostMapping 和 GetMapping 的使用场景、区别及核心要点的总结&#xff1a; 一、核心区别 特性GetMappingPostMappingHTTP 方法处理 GET 请求处理 POST 请求数据传输方式数据通过 URL 参数&#xff08;如查询参数&#xff09;传递数据通过 请求体&#xff08;Body&#…