通过HttpServletResponse传输流来下载文件

SpringBoot 普通文件下载 + 前端获取后端返回的文件流并下载 ⏹SpringBoot 普通文件下载 + 前端获取后端返回的文件流并下载 阅读详情
AI摘要

这篇博客介绍了如何使用Java后端通过HttpServletResponse向前端传输文件流,实现文件下载功能。后端通过读取文件并写入输出流,前端使用axios请求并设置响应类型为blob,然后转换为data URL,创建隐藏的下载链接触发下载。这是一个简单的文件下载交互示例。

给前端传输流,然后下载下来

这里提供一个思路,可以借鉴参考一下,写的比较简单.

Java后端代码

 public void extract(HttpServletResponse response) throws Exception{
        File file = new File("D://abc.zip");
        response.setContentType("application/octet-stream;charset=utf-8");
        response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(FileUtil.getName(file), "UTF-8"));
        FileInputStream fileInputStream = new FileInputStream(file);
        int len = 0;
        byte[] buffer = new byte[1024];
        OutputStream outputStream = response.getOutputStream();
        while((len=fileInputStream.read(buffer))>0) {
            outputStream.write(buffer, 0, len);
        }
        fileInputStream.close();
        outputStream.flush();
        outputStream.close();
    }

前端代码接受实现

axios({
          method: 'post',
          url: '/plat/document/configure/extract',
          data: data,
          responseType: 'blob',
          headers: {
            'Authorization': 'bearer ' + Cookies.get('vue_admin_template_token'),
            'Content-Type': 'application/json'
          },
        }).then(res => {
          console.log(res);
          const blob = res.data;
          const reader = new FileReader();
          reader.readAsDataURL(blob);
          reader.onload = (e) => {
            const a = document.createElement('a');
            a.download = res.headers.content-disposition.split('filename=')[1];
            a.href = e.target.result;
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
          }
        })
【数学建模技术】K近邻算法的距离度量与权重优化研究 本文系统研究了K近邻(KNN)算法的距离度量与权重优化方法。通过分析欧氏距离、曼哈顿距离、马氏距离等多种距离度量的特性,探讨了K值选择、权重分配策略及降维预处理等关键技术。实验结果表明,不同距离度量在不同数据集上表现各异,其中马氏距离在考虑特征相关性时表现最优。研究还验证了权重优化能有效提升算法精度,降维处理可缓解维度灾难问题。该研究为KNN算法的实际应用提供了理论依据和优化方向,特别是在模式识别和预测任务中展现出良好的性能。 阅读详情

相关推荐

CATIA二次开发CAA:(一)开发环境搭建

CATIA+CAA+RADE+VS2012

ysm1987的博客 1万+

Servlet:利用Response实现文件下载

Servlet:利用Response实现文件下载

m0_59800431的博客 1840

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 216

java 通过响应HttpServletResponse返回流给前端下载文件

用springboot java返回文件流给前端下载的时候。没反应

weixin_57205390的博客 8300

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

OpenClaw 多代理协同工作模式配置指南

OpenClaw 采用。

形上得其象,形下合于数;阴阳自济,玄理自明。 1万+

后端返回文件流,前端post请求接收并下载

后端返回文件流,前端post请求接收并下载

一只小绵羊 1万+

ER图从入门到精通:数据库建模全攻略

本文为数据库建模领域的 ER 图全面指南,系统解析从基础概念到实战应用的核心要点。首先介绍 ER 图的定义、三大组成元素(实体、属性、关系)及三种基础关系类型(一对一、一对多、多对多);其次详解绘制流程,涵盖工具选择(如 Visio、PowerDesigner)、需求分析方法及实体 - 属性 - 关系的分步建模技巧;进一步探讨弱实体、复合属性等高级概念,结合范式理论讲解模型优化策略;针对实体属性混淆、关系类型误判等常见问题提供解决方案;最后通过电商系统、图书馆管理系统等实际案例展示 ER 图设计全流程。

邓邓子的博客 4212

java微服务 下载文件_使用Feign实现微服务间文件下载

在使用Feign做服务间调用的时候,当下载大的文件会出现堆栈溢出的情况。另外,文件管理服务(服务提供者)文件下载接口无返回值,是通过HttpServletRespoonse传输的流数据来响应,那么服务消费者该如何接受下载的数据呢?一. 示例介绍我们调用feign_upload_second的下载文件接口下载文件,feign_upload_second内部使用feign调用feign_upload_...

weixin_28958239的博客 1262

基于STM32设计的便携式心电信号监测系统_474

本课题设计并实现了一种基于STM32单片机的便携式心电信号监测系统。系统以STM32F103C8T6为核心控制单元,结合PulseSensor心率传感器,实现对人体心率信号的采集与处理。通过单片机内部ADC模块对传感器输出的模拟电压信号进行采样,并对采集数据进行分析处理,从而计算得到实时心率值。

158

基于STM32、HAL库的GZP6816D气压传感器 驱动程序设计

测量范围:0-16kPa(可根据型号不同有变化)工作电压:1.8V-3.6V。高精度:±1% FS。

corlin6688的博客 217

Feign实现微服务间文件下载

在使用Feign做服务间调用的时候,当下载大的文件会出现堆栈溢出的情况。另外,文件管理服务(服务提供者)文件下载接口无返回值,是通过HttpServletRespoonse传输的流数据来响应,那么服务消费者该如何接受下载的数据呢? 一. 示例介绍 服务名 端口号 角色 feign_upload_first 8100 feign服务提供者 feig...

AaronSimon的博客 1万+

组基轨迹建模 GBTM的介绍与实现(Stata 或 R)

组基轨迹建模(Group-Based Trajectory Modeling,GBTM)(旧名称:Semiparametric mixture model)历史:由DANIELS.NAGIN提出,发表文献《Analyzing Developmental Trajectories:A Semiparametric,Group-Based Approach》GBTM能够将一群人的轨迹分类并生成数个具有代表性的运动轨迹模型,然后对每个轨迹模型进行分析,以了解人们的运动特征、生理水平和风险等级等。

三分钟热度 1万+

springboot 和 HttpServletResponse下载多文件方法

i++) {int length;i++) {int length;i++) {int length;int length;

拼命小孩的成长专栏 3317

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HttpServletResponse的使用:响应数据、下载文件

文章目录1.代码总览2. 常用响应3. 以字符流形式输出中文4. 以字节流输出中文5. 不区分字节流和字符流输出中文6. 下载文件 1.代码总览 package com.tx.servlet; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingExcepti

超级大洋葱的博客 5820

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

多次读取HttpServletRequest的inputstream方法 问题解决

原因:我要收集所有来自前台请求的参数信息,无论在任何地方的。当前请求参数都是json格式,都写在httpservlet的body中。这个只能通过流进行获取。然后问题来了,HttpServletRequest的inputstream只能读取一次。。。。 解决:重写request的inputstream方法。。然后在需要部署应用中加上过滤器,在过滤器中加上这个重写的request的方法,问题解决。 1、读取流信息的工具类:HttpUtil.java /**获取请求Body *

chijiansong的博客 3142

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Servlet】Response在页面获取字符输入流

Response在页面获取字符输入流 import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.H

Junnix的博客 1538

response

1.response概述 代表HTTP响应。 2.response继承结构 3.response组成 4.response操作 设置状态码的方法 void setStatus(int sc) void setStatus(int sc, String sm) 设置响应头的方法 void setHeader(String name, String value) void setDateHeader(String name, long date) void setIntHeader(String name,

Ajaxtxdy的博客 604

Java 中,使用 HttpServletResponse 对象将服务器上的文件响应到客户端浏览器进行下载

其中,Content-Type 表示响应内容的类型,这里设置为 application/octet-stream,表示二进制流。Content-Length 表示响应内容的长度,这里设置为字节数组的长度。Content-Disposition 表示响应头中的附加信息,用于告诉浏览器该如何处理响应内容。在这里,我们将它设置为 attachment,表示需要下载文件;并指定文件名和编码格式。2.设置 HttpServletResponse 的响应头信息,告诉浏览器需要下载文件,并指定文件名和文件类型。

monicateacat的博客 3335

java通过HttpServletResponse下载文件到客户端

import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; public class DownFile { /** * filename 下载到客户端后的文件名称   * ...

szzssz的博客 9744

Java实现字节流压缩ZIP包并下载

系统有一个数据列表,用户点击某行下载按钮,系统可以将该行数据转化成WORD文档的形式供用户下载查看,这里直接用 XWPFTemplate 可以轻松实现,但是数据太多的情况下用户不可能每条数据都点击下载,不仅耗时而且会在浏览器下载非常多的文件,用户不好整理,体验感较差,于是有了新需求:用户可以多选数据行,然后系统压缩成一个ZIP包,所有文件都在ZIP包里,用户只需要下载一个ZIP即可。通过ZIP压缩包的形式实现批量下载。

MakkaPakka_的博客 5655

Vue+SpringBoot根据url返回文件流给前端下载文件(多个图片zip下载)

【代码】Vue+SpringBoot根据url返回文件流给前端下载文件。

zcl520sy的博客 3954

Spring Boot 结合Vue下载文件

Spring Boot 部分代码 Vue 部分

u014303746的专栏 389

前端参数请求和后端参数接受

参数请求与接收 HTTP协议中定义了很多与服务端交互的方法,其中最基本的有四种,分别是GET,POST,PUT,DELETE,对应增删改查四种操作,最常用的是GET和POST。 请求头类型Content-Type主要有:application/x-www-form-urlencoded,multipart/form-data和application/json。 其中application/x...

xiaoyi52的专栏 1万+

HTTP方式文件分片断点下载

前言 在进行大文件或网络带宽不是很好的情况下,分片断点下载就会显得很有必要,目前各大下载工具,如:迅雷,都是很好的支持分片断点下载功能的。本文就通过http方式进行文件分片断点下载,进行实战说明。 HTTP之Range 在开始之前有必要了解一下相关概念及原理,即:HTTP之Range,才能更好的理解分片断点下载的原理。 什么是Range Range是一个H...

xcbeyond|疯狂源自梦想,技术成就辉煌 9039

文件下载-后台返回流给前端

这样浏览器会自动弹出文件下载对话框。最后,将文件的内容流写入 HTTP 响应输出流中,以返回给前端。在上面的 Servlet 中,首先需要获取要返回的文件路径,然后检查文件是否存在。如果文件不存在,返回。否则,设置 HTTP 响应类型为。

我是疯子中的扛把子的博客 3170
上一篇: SpringBoot 配置返回前端固定格式yyyy-MM-dd HH:mm:ss和接收ISO时间自动转为LocalDateTime
下一篇: 微信测试公众号配置问题“errcode“:-106token check fail“
今天又是努力的一天
博客等级 码龄7年 30粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值