企业级-PDF文件下载
作者:fyupeng
技术专栏:☞ https://github.com/fyupeng
项目地址:☞ https://github.com/fyupeng/rpc-netty-framework
留给读者
一、介绍
文件下载在浏览器可以根据响应头设置纯下载和直接打开两种方式。
二、代码
@RequestMapping("/downloadPdf")@ResponseBodypublic void downloadSignPdf(HttpServletRequest request, HttpServletResponse response) {OutputStream out = null;try {byte[] bytes = docService.downLoadPdf(gid, type, isHs);if (bytes == null) {// 构造错误信息的 JSON 格式字符串String errorMsg = "{\"msg\": \"文件不存在\", \"gid\": \""+gid+"\", \"type\": \""+type+"\", \"isHs\": \""+isHs+"\" }";// 设置响应的 Content-Type 和字符编码response.setContentType("application/json;charset=UTF-8");// 将错误信息写入响应输出流PrintWriter pw = response.getWriter();pw.print(errorMsg);pw.flush();return;}response.reset(); // 非常重要// 纯下载方式//response.setContentType("text/html; charset=UTF-8");//response.setHeader("Content-Disposition", "attachment;fileName=" + gid + ".pdf");// 直接打开response.setContentType("application/pdf"); // 设置返回的文件类型response.addHeader("Content-Length", String.valueOf(bytes.length)); //文件大小out = response.getOutputStream();out.write(bytes);out.flush();} catch (Exception e) {e.printStackTrace();logger.error("下载电子签名后的pdf失败,gid={}, type={}, isHs={}", gid, type, isHs);} finally {if (out != null) {try {out.close();} catch (Exception e) {e.printStackTrace();}}}}
三、总结
简洁、高效、易用!
相关文章:
企业级-PDF文件下载
作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/rpc-netty-framework 留给读者 一、介绍 文件下载在浏览器可以根据响应头设置纯下载和直接打开两种方式。 二、代码 RequestMapping("/…...
00 - React 基础
1. React 基础 安装react指令 可参考: 官网官网使用教程 如: npx create-react-app 项目名 如:npx create-react-app react-redux-proJSX JSX 是一种 JavaScript 的语法扩展,类似于 XML 或 HTML,允许我们在 Java…...
基于WPF技术的换热站智能监控系统17--项目总结
1、项目颜值,你打几分? 基于WPF技术的换热站智能监控系统01--项目创建-CSDN博客 基于WPF技术的换热站智能监控系统02--标题栏实现-CSDN博客 基于WPF技术的换热站智能监控系统03--实现左侧加载动画_wpf控制系统-CSDN博客 基于WPF技术的换热站智能监…...
CI /CD学习
CI/CD概述 CI/CD 是持续集成和持续交付/部署的缩写,旨在简化并加快软件开发生命周期。 持续集成(CI)是指自动且频繁地将代码更改集成到共享源代码存储库中的做法。持续交付和/或持续部署(CD)是一个由两部分组成的过程…...
基于matlab的高斯滤波与图像去噪
1 高斯滤波原理 1.1 原理 高斯滤波是一种线性平滑滤波技术,主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程,即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波实质上是一种信号的滤…...
解决 uniapp h5 页面在私有企微iOS平台 间歇性调用uni api不成功问题(uni.previewImage为例)。
demo <template><view class"content"><image class"logo" src"/static/logo.png"></image><button click"previewImage">预览图片</button></view> </template><script> //打…...
Jenkins nginx自动化构建前端vue项目
在现代的Web开发中,Vue.js已经成为一种非常流行的JavaScript框架。为了更高效地管理和部署Vue.js项目,使用自动化构建工具是至关重要的。Jenkins作为一款强大的持续集成和持续部署(CI/CD)工具,为我们提供了一种便捷的方…...
Devicetree - 删除某个节点或属性
在设备树(devicetree)中,删除语法用于从现有设备树中删除属性或节点。这通常在设备树覆盖文件(DTS)或片段文件中完成。该语法使用 /delete-property/ 和 /delete-node/ 指令。 以下是如何使用这些指令的示例࿱…...
Xcode will continue when the operation completes
Xcode 15后,连接手机经常出现 Preparing iPhone. Xcode will continue when the operation completes.记录一下解决办法。其他提示,Xcode连接不上手机也可以尝试通过这个方法解决。 注意:最好关闭科学上网再操作。 从Xcode取消iPhone的配对(右键单击 -Unpair Devi…...
Python爬虫-贝壳新房
前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地…...
Canvas绘制图片和区域
如何使用Canvas在图片上绘制区域? 一. 首先,我们需要初始化三个canvas画布(初始化Canvas) initCanvas() {// 初始化canvas画布let canvasWrap document.getElementsByClassName("canvas-wrap");this.wrapWidth canva…...
Day10—Spark SQL基础
Spark SQL介绍 Spark SQL是一个用于结构化数据处理的Spark组件。所谓结构化数据,是指具有Schema信息的数据,例如JSON、Parquet、Avro、CSV格式的数据。与基础的Spark RDD API不同,Spark SQL提供了对结构化数据的查询和计算接口。 Spark …...
开源技术:在线教育系统源码及教育培训APP开发指南
本篇文章,小编将探讨如何利用开源技术开发在线教育系统及教育培训APP,旨在为有志于此的开发者提供全面的指导和实践建议。 一、在线教育系统的基本构架 1.1架构设计 包括前端、后端和数据库三个主要部分。 1.2前端技术 在前端开发中,HTML…...
[C++][设计模式][观察者模式]详细讲解
目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一1.FileSplitter.cpp2.MainForm.cpp 2.代码二1.FileSplitter.cpp2.MainForm.cpp 1.动机 在软件构建过程中,需要为某些对象建立一种“通知依赖关系” 一个对象(目标对象)的状态发生改变,所有的依赖对象…...
Adobe Acrobat 编辑器软件下载安装,Acrobat 轻松编辑和管理各种PDF文件
Adobe Acrobat,它凭借卓越的功能和丰富的工具,为用户提供了一个全面的解决方案,用于查看、创建、编辑和管理各种PDF文件。 作为一款专业的PDF阅读器,Adobe Acrobat能够轻松打开并展示各种格式的PDF文档,无论是文字、图…...
eVTOL飞机:技术挑战、应用机遇和运动的作用
最近,航空业的嗡嗡声围绕着电动空中出租车、空中拼车、无人驾驶航空货物运送等。这些概念都依赖于一类称为eVTOL的飞机,eVTOL是电动垂直起降的缩写。 与直升机类似,但没有噪音和排放,eVTOL可以在不需要简易机场的情况下飞行、悬停…...
【python】flask中如何向https服务器传输信息
【背景】 用flask做一个支持流媒体传输的网页,如何将信息post给流媒体服务器呢? 【方法】 简单例子,视图函数这么写: url = "https://yourip/mytext" headers = {Content-Type:application/octet-stream} @app.route(/,methods=["POST"...
计算机网络 —— 应用层(FTP)
计算机网络 —— 应用层(FTP) FTP核心特性:运作流程: FTP工作原理主动模式被动模式 我门今天来看应用层的FTP(文件传输协议) FTP FTP(File Transfer Protocol,文件传输协议&#x…...
zookeeper + kafka消息队列
zookeeper kafka 消息队列 一、消息队列简介 1、什么是消息队列 消息队列(Message Queue)是一种用于跨进程或分布式系统中传递消息的通信机制。消息队列在异步通信、系统解耦、负载均衡和容错方面具有重要作用。 (1)特性 异步…...
Python高级编程:深度学习基础
Python高级编程:深度学习基础 在前几篇文章中,我们探讨了Python的基础语法、面向对象编程、标准库、第三方库、并发编程、异步编程、网络编程与网络爬虫、数据库操作与ORM、数据分析与数据可视化以及机器学习基础。在这篇文章中,我们将深入探讨Python在深度学习领域的应用。…...
Spring Boot 3.0 + Java 17 微服务实战:用Gradle统一管理多模块依赖与版本,告别配置混乱
Spring Boot 3.0 Java 17 微服务实战:用Gradle统一管理多模块依赖与版本 在微服务架构中,依赖管理往往成为开发者的噩梦。想象一下,当你需要在十几个子模块中同步更新Spring Boot版本时,传统的做法是在每个模块的构建文件中逐一修…...
3步掌握B站视频下载:解锁大会员4K高清内容
3步掌握B站视频下载:解锁大会员4K高清内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader Bilibili-downloader是你获取B站…...
STM32开发方式对比与HAL库实战指南
1. STM32开发方式概述作为一名嵌入式开发者,我亲历了STM32开发方式的变迁。从早期的寄存器操作到标准库,再到如今主流的HAL库,每种方式都有其独特的优势和适用场景。对于刚接触STM32的新手来说,选择合适的开发方式往往是个令人困惑…...
TinyUPnP:嵌入式设备轻量级UPnP端口映射实现
1. TinyUPnP:面向嵌入式平台的轻量级UPnP IGD客户端实现 TinyUPnP 是一个专为资源受限嵌入式系统设计的极简 UPnP(Universal Plug and Play)Internet Gateway Device(IGD)客户端库,核心目标是 在无用户干预…...
别再只跑例程了!深入解析ESP32S3的Camera模块:从DVP时序到图像缓冲区的底层逻辑
深入解析ESP32S3的Camera模块:从DVP时序到图像缓冲区的底层逻辑 当你在ESP32S3上成功运行了第一个Camera例程,看到LCD屏幕上显示出模糊的测试图像时,那种成就感可能很快就会被新的疑问取代:为什么图像有时会卡顿?为什么…...
汇川小型机 H5U编写程序 设备采用回转hu小型机编写程序不含的硬件配置有ECT的总线
汇川小型机 H5U编写程序 设备采用回转hu小型机编写程序不含的硬件配置有ECT的总线,包括汇川660系列伺服驱动器以及Io模块。 设备程序分段明确采用梯形图编写更加方便,直观,易懂各个伺服轴密切配合,实现收放卷pid调节,以…...
SDMatte高清人像抠图作品集:影视级海报与创意合成的幕后利器
SDMatte高清人像抠图作品集:影视级海报与创意合成的幕后利器 1. 开篇:当AI遇见专业级人像抠图 想象一下这样的场景:电影海报需要将主演从绿幕背景中完美剥离,电商广告要把模特无缝融入不同场景,艺术创作需要将人物与…...
智能车越野组硬件拆解:我们如何用CYT4BB7核心板与四硅麦矩阵搞定声音信标定位?
智能车越野组硬件拆解:四硅麦矩阵与CYT4BB7核心板的声学定位实战 全国大学生智能车竞赛越野组的硬件设计,本质上是一场关于精度、效率和可靠性的极限挑战。当其他队伍还在为三硅麦方案的布线发愁时,我们已经用四硅麦矩阵将声音信标定位误差控…...
不止于配置:用Horizon UAG 21.11打造安全外网访问,别忘了这些加固设置
超越基础配置:Horizon UAG 21.11安全加固全指南 在虚拟桌面架构中,统一接入网关(UAG)作为内外网流量的安全屏障,其配置合理性直接影响整体架构的安全性。许多管理员在完成UAG基础部署后,往往忽略了更深层次…...
vscode-remote-ssh-server首次安装或者更新无响应时解决方案
当vscode更新后,remote-ssh服务端的server也需要同步更新,否则会无法连接,若服务器的网络下载服务端文件非常慢或者无法连接外网,则需要手动下载离线包拷贝到对应的目录下。1、使用mobaXtern(或者其他SSH工具ÿ…...
