SpringBoot实现服务器PDF文件的下载和预览功能

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线

文章目录

  • 一、前言
  • 二、项目之前的准备
  • 三、项目实现代码
  • 四、功能演示
      • 1、下载功能
      • 2、预览功能

一、前言

一般我们的项目需要实现下载和预览功能,我们这次主要通过HttpServletResponse输出流实现文件的下载和预览功能

二、项目之前的准备

  • 我们需要准备maven依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version>
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency></dependencies>
  • 提前准备好pdf文件

三、项目实现代码

package com.whj.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;/*** @author 王恒杰* @date 2022/10/26 9:26* @Description:*/
@RestController
@RequestMapping("/file")
public class FileController {@GetMapping("/downloadFile")public void downloadCheck(HttpServletRequest request, HttpServletResponse response) {try {File file = new File("D:\\Idea\\stamp\\Itext\\src\\main\\resources\\pdf\\EncryptPDF.pdf");BufferedInputStream bis = null;OutputStream os = null;FileInputStream fileInputStream = null;response.setCharacterEncoding("utf-8");response.setContentType("application/pdf");response.setHeader("Content-Disposition", "attachment; filename=EncryptPDF");try {fileInputStream = new FileInputStream(file);byte[] buff = new byte[1024];bis = new BufferedInputStream(fileInputStream);os = response.getOutputStream();int i = bis.read(buff);while (i != -1) {os.write(buff, 0, buff.length);i = bis.read(buff);os.flush();}os.flush();os.close();
//                return SimpleResult.ok("导出成功",os);} catch (IOException e) {e.printStackTrace();
//                return SimpleResult.fail("导出失败",null);} finally {if (bis != null) {try {bis.close();fileInputStream.close();} catch (IOException e) {e.printStackTrace();
//                        return SimpleResult.fail("导出失败",null);}}}} catch (Exception e) {e.printStackTrace();}}@GetMapping("/previewCheck")public void previewCheck( HttpServletRequest request, HttpServletResponse response) throwsIOException {FileInputStream is = new FileInputStream(new File("D:\\Idea\\stamp\\Itext\\src\\main\\resources\\pdf\\EncryptPDF.pdf"));// 清空responseresponse.reset();//2、设置文件下载方式response.setCharacterEncoding("utf-8");response.setContentType("application/pdf");OutputStream outputStream = response.getOutputStream();int count = 0;byte[] buffer = new byte[1024 * 1024];while ((count = is.read(buffer)) != -1) {outputStream.write(buffer, 0, count);}outputStream.flush();}
}

四、功能演示

1、下载功能

  • 地址:http://localhost:8081/file/downloadFile

2、预览功能

  • 地址:http://localhost:8081/file/previewCheck

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PDF文件不能编辑,有什么办法能够解决?

PDF文件打开之后发现不能编辑&#xff0c;很有可能是因为PDF文件设置了限制编辑。一般来说&#xff0c;想要解决问题&#xff0c;我们只需要将PDF编辑限制解除就可以了 但是大家有时候可能是不知道PDF密码的&#xff0c;那么在不知道PDF密码的情况下&#xff0c;如何解决不能编…

java利用itext编辑pdf

最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现 . itext的官网是:http://www.itextpdf.com/ 代码如下: Java代码 /** * authory kingviker * time : 2012-12-12 */ import java.io.FileOutputStream; import java.io.IOExcepti…

java设置pdf不可编辑_禁止编辑,但允许在Java iText / PDF中进行页面提取

我正在使用iText生成PDF文件 . 我想禁止编辑PDF&#xff0c;但允许读者提取页面 . 这是我设置加密的代码&#xff1a; writer.setEncryption(null, null, 0xffffffff, PdfWriter.STANDARD_ENCRYPTION_128); 第三个参数指定权限 . 我正在使用0xffffffff而不是单独的iText标志ALL…

HTML5 PDF 编辑,pdf.js的使用与改造

一、前期准备 1.1 需求描述 1.想让各个浏览器能显示服务器存放的PDF文件(主要是手机的浏览器) 2.想让项目结构如下:lib目录存放pdf.js等依赖文件,src存放要显示的pdf文件 想要的项目结构 3.这样我就可以将这个项目放到我网站的任何目录下,比如放到PDF或者别的文件夹下 PDF目…

如何免费编辑PDF文档?

我们都知道PDF文档不像Word文档一样可以直接编辑修改&#xff0c;想要编辑PDF文档&#xff0c;我们就需要借助专业的PDF编辑器。今天小编就给大家推荐一款可以免费编辑PDF文档的工具“金闪PDF编辑器”。 金闪PDF编辑器是一款功能齐全的强大的PDF工具&#xff0c;目前有移动端安…

PDF文件编辑并去除水印

我相信很多博友肯定被这个问题烦恼过&#xff0c;并且当初我自己也因为这个事情熬的掉了好几根头发&#xff0c;这件事就是PDF文件编辑过后会留下很严重的水印&#xff0c;并且无法除去&#xff0c;想去除就得花钱购买会员&#xff0c;想白嫖都没有办法&#xff0c;接下来我就为…

怎么编辑PDF文件?分享三种好用的编辑方法

怎么编辑PDF文件中的内容呢&#xff1f;大家在日常使用PDF文件的过程中肯定遇到过需要编辑文件的需求&#xff0c;因为我们不能保证每个文件中的内容都不会出错&#xff0c;问题是PDF文件不容易改动&#xff0c;我们怎么做才能够编辑PDF文件呢&#xff1f;不用着急&#xff0c;…

如何编辑PDF文件?编辑PDF的方法有哪些?

PDF文件是一种广泛使用的文档格式&#xff0c;通常用于共享和阅读文档&#xff0c;如电子书、报告、合同等。但是&#xff0c;有时候您可能需要编辑PDF文件。编辑PDF文件可能听起来很困难&#xff0c;但是有许多方法可以轻松地编辑PDF文件。本文将探讨几种最常见的编辑PDF文件的…

PDF编辑:Adobe Acrobat X Pro 官方原版下载+中文汉化补丁

Adobe在10月份发布了新一代Acrobat X软件家族&#xff0c;其中包括PDF创建编辑软件Acrobat X Pro,因为Acrobat X Pro是Acrobat Pro 9.0的后续版本&#xff0c;故也有人称其为Acrobat Pro 10.0。虽然Aodbe Acrobat X Pro正式版发布许久了&#xff0c;但Acrobat X Pro 简体中文版…

Windows系统下的PDF编辑工具软件-PDF编辑器下载

PDF编辑器是一款Windows系统下的PDF编辑工具软件&#xff0c;它支持修改编辑PDF文件并向PDF添加文字、擦除内容、插入图片、绘制直线、加椭圆框、加矩形框和旋转PDF等功能。PDF编辑器可以让您在PDF文件的任何位置添加文字、删除内容、加图片或进行其他编辑&#xff0c;简单的如…

JVM学习笔记二

1. JVM内存参数 要求 熟悉常见的 JVM 参数&#xff0c;尤其和大小相关的 堆内存&#xff0c;按大小设置 解释&#xff1a; -Xms 最小堆内存&#xff08;包括新生代和老年代&#xff09; -Xmx 最大堆内存&#xff08;包括新生代和老年代&#xff09; 通常建议将 -Xms 与 -…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接&#xff1a;198. 打家劫舍&#xff08;中等&#xff09; 1.方法 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&am…

go 并发/并行/协程/sync锁读写锁

下面来介绍几个概念&#xff1a; 进程/线程&#xff1a; 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体&#xff0c;是 CPU 调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一…

易点易动打通财务系统,打破数据孤岛,实现固定资产的账实一致

固定资产管理涉及资产的采购、验收、账务处理、折旧管理等全流程,同时也牵涉到财务系统和资产系统两大信息孤岛。这两个系统之间数据不互通,导致资产的账实信息无法同步,无法真正实现资产管理的账实一致。 固定资产系统作为固定资产管理的业务系统,负责资产的采购申请、验收入…

【ECCV2022】DaViT: Dual Attention Vision Transformers

DaViT: Dual Attention Vision Transformers, ECCV2022 解读&#xff1a;【ECCV2022】DaViT: Dual Attention Vision Transformers - 高峰OUC - 博客园 (cnblogs.com) DaViT&#xff1a;双注意力Vision Transformer - 知乎 (zhihu.com) DaViT: Dual Attention Vision Trans…

计算机右上角无法搜索,win10系统,文件夹右上角的搜索栏点击无反应,无法输入怎么办?...

具体方法如下&#xff1a; 1、在win10系统上按winR键打开运行原版win10系统下载&#xff0c;输入regedit&#xff0c;如下图所示&#xff1a; 2、打开注册表之后原版win10系统下载&#xff0c;点击HKEY_LOCAL_MACHINE&#xff0c;如下图所示&#xff1a; 3、然后依次点击“HKEY…

wow!蛇形矩阵!但是看到最后一行我就吐血了......

&#xff08;本人是小学生哟&#xff01;&#xff09; 今天看到了一道特别BT的题目&#xff0c;蛇形矩阵。 【问题描述】(本题所有的矩阵&#xff0c;就相当于数字填入一个正方形) 一个n行n列的蛇形矩阵可由如下方法生成&#xff1a; 从矩阵的左上角&#xff08;第1行第1列&…

对WoW Shader文件的分析

Wow的渲染引擎是同时支持固定渲染管线渲染和Shader渲染管线渲染的.bls文件是wow的shader文件,分析它的实现可以学习引擎是怎样渲染的,以及如何做一个兼容固定管线和Shader管线的引擎. bls里存储的是OpenGL low-level shading language的指令,terrain1.bls,terrain2.bls,terrain…

wow服务器显示锦标赛,魔兽世界史诗钥石地下城 全球锦标赛“计时赛”指南

史诗钥石地下城全球锦标赛(MDI)春季赛的“试炼场”已经结束。全球数以千计的勇士响应号召&#xff0c;获得了进入锦标赛服务器参加“计时赛”的资格。东部赛区的地下城英雄们&#xff0c;请了解以下这些信息&#xff01; 欢迎来到锦标赛服务器 所有成功通过“试炼场”挑战的玩家…

wow转服服务器不显示,《魔兽世界》部分服务器开启免费转服 解决负载过高问题...

《魔兽世界》全新资料片“暗影国度”已于本周四正式开启&#xff0c;新版本上线导致大量玩家同时涌入游戏&#xff0c;给一些服务器造成了不小的负担。为了解决这个问题&#xff0c;提升玩家体验。今日&#xff0c;魔兽世界官方微博宣布官方为部分高负载、高排队的服务器开启了…