axios+springboot实现图片预览(POST方式)

前端表单提交与后端处理全解析:从HTML到Axios与SpringBoot实战 安全规范敏感操作必须使用POST+HTTPS文件上传接口需要校验文件类型和大小技术选型建议fill:#333;color:#333;color:#333;fill:none;简单查询表单提交复杂交互文件传输数据提交场景HTML表单GETHTML传统POSTAxios+JSONFormData调试技巧浏览器开发者工具查看:Headers中的Content-Type是否匹配Payload中的参数格式是否正确Postman测试时选择对应body格式。 阅读详情

相关文章:
axios+springboot实现文件上传(文件以及表单)、下载(post/get方式)


简介

图片实际上就是图片下载功能

实现

①后端下载逻辑
就是接收前台传过来的文件名fileName,找到对应的文件返回给前台

@RequestMapping("/download")
public ResponseEntity<Object> downloadFile3(@RequestBody String fileName) {
    return downloadFile(fileName);
}

private ResponseEntity<Object> downloadFile(String fileName){
    String parentPath = getParentPath();
    File file = new File(parentPath, fileName);
    InputStreamResource resource = null;
    try {
        resource = new InputStreamResource(new FileInputStream(file));
    } catch (Exception e) {
        e.printStackTrace();
    }
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", String.format("attachment;filename=\"%s", fileName));
    headers.add("Cache-Control", "no-cache,no-store,must-revalidate");
    headers.add("Pragma", "no-cache");
    headers.add("Expires", "0");
    ResponseEntity<Object> responseEntity = ResponseEntity.ok()
            .headers(headers)
            .contentLength(file.length())
            .contentType(MediaType.parseMediaType("application/octet-stream"))
            .body(resource);
    return responseEntity;
}

②前端代码:
因为是post请求,axios接收到的其实是二进制,这时候需要加上data:image/png;base64,前缀进行Base64编码,就可以正常显示了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="uploadApp">

    <span>{{ saveFileName }}</span>
    <br/><br/><br/>
    <button @click="goPreview" style="width: 80px;height: 30px;">图片预览</button>

    <div id="imgShowModal" style="margin-left: 0;display: none;">
        <img :src="showImg">
    </div>

</div>

<script src="/js/public/jquery-3.4.1.min.js"></script>
<script src="/js/public/vue.min.js"></script>
<script src="/js/public/axios.min.js"></script>

<script>
    let app = new Vue({
        el: '#uploadApp',
        data: {
            bean: {},
            saveFileName: 'test.png',//要下载的文件名
            showImg: ''
        },
        methods: {
            goPreview: () => {
                axios({
                    method: "POST",
                    url: "/download",
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    data: app.saveFileName,
                    responseType: 'arraybuffer'//注意这里的类型
                }).then(response => {
                	//post接收到的字符串,这里要转换
                    return 'data:image/png;base64,' + btoa(new Uint8Array(response.data).reduce((data, byte) => data + String.fromCharCode(byte), ''));
                }).then(data => {
                    app.showImg = data;
                    $('#imgShowModal').show();
                });
            }
        }
    })
</script>
</body>
</html>

③效果展示:
在这里插入图片描述

当迁移学习遇见室内定位:基于UJIIndoorLoc的跨场景适配实践 本文探讨了迁移学习在跨建筑室内定位中的应用,重点解析了UJIIndoorLoc数据集的特性及其在解决设备差异和环境变化中的关键作用。通过特征工程、迁移学习策略和小样本微调技术,显著提升了定位模型的跨场景适配能力,为实际部署提供了有效解决方案。 阅读详情

相关推荐

S7-1200g2运动控制实战:从轴组配置到程序调试

本文详细介绍了S7-1200g2运动控制功能的实战应用,从轴组配置到程序调试的全流程。通过TIA Portal中的工艺对象配置,实现单轴、同步轴组等运动控制模型,并分享常见问题排查与性能优化经验,帮助工程师快速掌握中小型自动化设备的运动控制技术。

weixin_28698059的博客 589

axios获取图片显示_Vue.js+axios图片预览以及上传显示进度

在平时项目开发中,我们经常会对文件做一些上传操作,不仅仅要实现基本需求,也要兼顾用户体验,根据自己在工作中遇到的问题谈谈对图片上传的预览以及上传进度的优化。1.搭建项目基于Vue.js+axios搭建的项目,新建一个Index.Vue项目如下,基本结构可以先可以选择文件,预览文件。上传图片选择文件:图片预览: 上传文件到服务器...data(){return{imgPreViewSr...

weixin_29541743的博客 903

Cartographer全局重定位优化:无初始位姿约束的2万平工厂秒级定位实践

本文深入解析了Cartographer在2万平工业场景中的全局重定位优化实践,通过分支定界优化、子图动态加载和多传感器融合等关键技术,实现了无初始位姿约束下的秒级重定位。特别针对大场景下的快速重定位需求,优化后的系统在RK3588平台上表现出色,定位耗时从47秒降至1.8秒,成功率提升至91%,为工业自动化提供了高效解决方案。

rose2的博客 969

使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载...

使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载 2018年06月07日 10:42:26 守望dfdfdf 阅读数:235 标签: java httpUrlConnection post 更多个人分类: 工作 问题编辑版权声明:本文为博主原创文章,转载请注明文章链接。 https://blog.youkuaiyun.com/xiao...

weixin_30614587的博客 776

【LaTex】LaTex的下载与安装(2025新手小白超详细、超简洁 Windows系统)

安装地点(1)texlive的安装:首先打开下载好的安装包,找到这个文件前面缺少了一页emm我去截取其他人的作为示范然后点击安装安装时间较久,大概要一个小时左右。具体要看个人电脑性能情况。如图显示如上图,则安装成功。图中是TeXstudio 4.8.7版本针对不同操作系统和使用场景的安装包 ,区别如下:(按需求下载)

爱学习的capoo的博客 5104

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1861

Vue.js根据后端返回文件流,通过post请求下载、预览文件,并兼容当后台抛出异常时捕获错误信息。

由于后端返回的是文件流,需要前端对返回的文件流进行处理 1.先是声明发送请求的返回格式:responseType: 'blob' 自定义下载文件请求方法: /** * 封装文件下载post请求 * @param url * @param data * @returns {Promise} */ export function fileDownload (url, data = {}){ return new Promise((resolve,reject) => {...

jinchunzhao的博客 3799

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 528

js通过POST请求服务器文件,得到字节流并实现预览

// 附件base64解析 analyse64: function(attName, attType){ if(attType===1) { // 图像预览 this.loading_show = true; this.blobURL = ''; let formData = new FormData(); let config = { headers: {'Content-Type': 'multipart/form-data', "Aut.

ahornbeast的博客 1274

【自动驾驶轨迹规划之hybrid A*算法】

本文参考论文:https://ai.stanford.edu/~ddolgov/papers/dolgov_gpp_stair08.pdf 这篇文章是基于经典A*算法与reeds-shepp曲线的,不清楚的读者请参考【自动驾驶轨迹规划5之A*算法】_无意2121的博客-优快云博客【自动驾驶轨迹规划之dubins曲线与reeds-shepp曲线】_无意2121的博客-优快云博客 目录 1 hybrid A* 算法创新点 1.1 搜索方式 1.2 车辆运动学模型 1.3 reeds-shepp曲

weixin_65089713的博客 1万+

C++设计模式之观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现分布式事件处理系统,当一个对象(称为“主题”或“发布者”)改变状态时,所有注册的观察者都会收到通知。

每天进步一点点。 601

HTTP Content-Disposition Explanation [ from MDN ]

在常规的HTTP应答中,Content-Disposition消息头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。 在multipart/form-data类型的应答消息体中,Content-Disposition消息头可以被用在multipart消息体的子部分中,用来给出其对应字段的相关...

weixin_30266829的博客 313

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Content-Type+前端axios传值方式---springboot接收前端参数方式

Content-Type+前端axios传值方式---springboot接收前端参数方式

鸢尾_的博客 1507

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

axios+springboot实现文件上传(文件以及表单)、下载(post/get方式)

简介 spring boot 的文件上传下载与 spring mvc的基本一致,只需注意一些配置即可。 文章将介绍: 上传:单文件上传方式、多文件上传方式、文件与表单数据一起提交的方式 下载:get方式、post方式 基础配置: 需要文件上传的必定是web项目,web依赖必不可少: <!-- web --> <dependency> <groupId>o...

淋雨一直走啊 7312

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Vue多个图片同时上传到SpringBoot

Vue多个图片同时上传到SpringBoot 先睹为快 vue页面程序 <div> <el-upload :multiple="multiple" action="/uploadPics" list-type="picture-card" :auto-upload="false" :http...

菜鸟零号 kungfu~peng 2999

前端axios发送图片以及java springboot接受并保存文件简单示例

一个简单的前端发送图片到后端并获取URL地址的简单示例。

m0_73952463的博客 640

elm ui , elm upload 上传图片,java springboot post

elm ui , elm upload 上传图片,java springboot post <el-upload action="' '" list-type="picture-card" :limit="3" show-file-list :auto-upload="false" :on-change="change" multiple > <i class="el-icon-

jonathan_joestar的博客 1047

axios传递数据到java_axios 传输与springboot后台接收数据

axios使用不再说明,直指常见问题元凶:1.get(url[, config])和post(url[, data[, config]]),注意参数get是在config中设置params{params:{...} }post是设置data字段详细看文档(在post里面用params会把参数放到url里的)2.headers中的Content-Type,视乎请求方式(GET/POST等)的不同,有...

weixin_39592240的博客 1047

vue axios 多图片上传之前端及springBoot接口param篇

vue axios 多图片上传之前端及springBoot接口param篇

Ch_cabbage的博客 898

springboot+vue文件上传下载在线预览

String path = "E:/cjk/现场监管/3hxcjcjg/xcjc-core/src/main/resources/file"+fileName;<el-button v-if="imgUrl" type="primary" @click="uploadFile">上传</el-button>String Path = "E:/cjk/现场监管/3hxcjcjg/xcjc-core/src/main/resources/file";// 根据文件类型,设置文件Content-Type。

chejinkun的博客 493

Springboot与前端图片交互(一)

开发需求:前端页面可以上传文件或者图片到服务端,服务端可以接收文件或图片;同时前端可以请求服务端的图片或者文件。为了简单起见,我已图片为例进行开发。

qq_34830247的博客 4303

axios的Post请求对于上传文件与对象多参数的解决

前情提要 今天在自己写项目的时候,遇到了一个功能需求,碰壁了一下午,特地来记录一下,使用axios如何做到在post请求的前提下可以同时上传文件与对象。 解决问题切入点 首先我们需要知道一个知识概念,在上传文件时,axios的请求头与平时上传对象的请求头是不同的,这也是造成容易出现问题的关键所在。 上传文件的请求头 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 一般对象的请求头 "Content-type

weixin_44752167的博客 6165

springboot + vue + element-ui + axios 功能实现

springboot + vue + element-ui + axios 查询数据功能实现 1. 创建vue 工程,参考博客 安装 elment-ui 和 axios https://blog.youkuaiyun.com/qq_21344887/article/details/116256535 2. 使用mybatis-plus 生成 springboot 项目 参考地址: https://gitee.com/superman58/SpringbootDemo/tree/master/mybatis-plus 3

qq_21344887的博客 574

多文件上传,vue+springboot(axios+FormData)

1.文件上传 项目中用到图片上传功能,采用的是vue+springboot方案,效果图如下: 前端代码 前端提交请求时,会有跨域问题,这里使用axios方案解决。 <template> <div style="margin-top: 10px"> <div style="margin-left :10px"> <el-upload class="upload-demo" ref="upload" action="https://j

淮水竹亭 912

vue+springboot 图片文件上传及回显

Vue+SpringBoot 实现图片上传及回显

wssy_day的博客 1497

Vue中用axios向后端接口POST数据,Spring端收不到

that.results.push({ title: “字符串”, result: res.data });},},

m0_63102527的博客 621
上一篇: SpringBoot发送邮件
下一篇: SpringBoot配置多数据源
淋雨一直走啊
博客等级 码龄11年 39粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值