1,起由

业务流程:上传文件——服务器保存文件——根据路径访问文件

这种根据路径定位文件,并对文件进行查看的方式对文件安全有很大威胁,一旦知道其他文件的路径,很有可能会造成文件泄露

2,改进

所以,当前端访问文件的时候,发出请求并携带token,后端验证token,确认为合法用户之后,放行

根据请求路径执行后端的代码(后端代码逻辑:根据路径读取文件,输出文件流,响应给前端)

3,配置文件

配置上存文件的保存路径

4,代码:

import org.apache.commons.io.IOUtils;@Value("${file.ectdreport-folder}")private String ectdReportFolder;@Transactional(rollbackFor = Exception.class)public void lookReport(String id, HttpServletResponse response) throws Exception {String url = ectdReportFolder + id + "/file1.html";File file = new File(url);if (!file.exists()) {throw new Exception("文件不存在");//抛出文件不存在的}response.setContentType("text/html");FileInputStream fis = null;OutputStream outputStream = response.getOutputStream();try {fis = new FileInputStream(file);//将读取流拷贝到输出流中IOUtils.copy(fis, outputStream);//清空缓存的读取流,保证数据完整性response.flushBuffer();} catch (IOException e) {e.printStackTrace();throw new Exception("解析失败");} finally {if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}if (outputStream != null) {outputStream.close();//输出流关闭}}}

Java 安全 后端返回文件流相关推荐

  1. react前端下载后端返回文件流(文件流下载excel、csv)

    以前用vue框架的时候,写过不少下载上传的东西,当然包括后端返回文件流供前端下载,现在用react,牵扯到这个功能,又提起来说,有两种下载类型,一种是Excel,一种是Csv. 首先后端返回这种: 或 ...

  2. Excel文档导出-后端返回文件流,前端实现下载功能

    最近在做项目的时候遇到Excel导出功能,后端返回的是文件流,前端如何实现下载功能,以下是项目用的源码,有需要可直接复制使用: // 导出exporttable() {this.axios({meth ...

  3. 前端通过后端返回文件流下载文件

    // 把文件流下载下来 const downloadMethods = (name, res) => {const blob = new Blob([res.data], { type: 'ap ...

  4. Vue 预览word,excel,ppt等office文档-内网访问(基于onlyoffice,后端返回文件流)

    Vue 预览word,excel等office 先看效果!! 需求背景:在前端页面中预览office文件且是内网访问,服务器不可访问外网的前提. 因此微软的接口就废掉了,因为他接口的条件是可以访问外网 ...

  5. vue 后端返回文件流下载文件

    效果: 举例下载"E:\test\jn_ceshi1202.txt" 则前端realPath="E:\test\jn_ceshi1202.txt" 前端: do ...

  6. 采用hutool后端返回文件流供前端下载

    文章目录 1.导入依赖 2.代码 3.前端测试 1.导入依赖 <!--hutool--><dependency><groupId>cn.hutool</gro ...

  7. 前端点击下载压缩包zip,后端返回文件流

    接口请求带responseType: 'blob' export const fileDownloadZip = (params) => {return request({url: '/file ...

  8. vue 后端返回二进制流文件,前端如何实现下载?

    目录 1. axios 请求二进制流文件导出文件 1.1 后台返回的二进制流: 1.2 使用: 1.3 需要注意以下几点: 2. 关于 arraybuffer 和 blob 2.1 ArrayBuff ...

  9. JAVA下载 PDF 到本地 或 返回文件流

    @Slf4j public class PDFUtils {/**** @param fileUrl 文件路径* @param saveUrl 文件保存路径* @param fileName 文件名称 ...

最新文章

  1. vc中载入flash资源
  2. 技术正文 history命令添加时间---测试磁盘写入速度
  3. MATLAB从入门到精通-欧拉法与梯形法求解微分方程(含MATLAB源码)
  4. 利用WiFi Pineapple Nano渗透客户端获取SHELL
  5. 使用 Excel 读取 SAP ABAP CDS View 通过 ODBC 暴露出来的数据
  6. spring 的aop操作
  7. POJ 1276 Cash Machine
  8. python人像精细分割_人像抠图 - 发丝级人像分割 - 照片人物特效 - 极链科技
  9. tcp三次握手和在局域网中使用 awl伪装MAC地址进行多线程SYN攻击
  10. C语言实现函数调用的三种方法
  11. iOS 基础入门--Bull' Eye 小游戏 
  12. Windows Server2012默认的80端口被System进程占用解决办法
  13. 怎么用计算机里的坦克大战,坦克大战怎么使用重坦_坦克大战重坦篇_7k7k坦克大战...
  14. 中国农业大学计算机考研拟录取名单,2019中国农业大学硕士考研研究生拟录取名单...
  15. 1.488Mpps是如何计算出来的
  16. 全面屏/刘海屏及虚拟键适配--总结版
  17. 2019年1-4月份雅思口语题库素材(原创)describe an interesting persion you would like to meet
  18. Windows10修改Users下的用户文件夹名
  19. SQL_数据库表的操作
  20. 基于swiper使用vue-awesome-swiper 实现鼠标移入暂停自动播放、左右按钮控制前进后退、常见避坑、API中文文档地址

热门文章

  1. ESlint语法检测工具
  2. 医院计算机专业年薪,说一些我朋友真实的深圳公立三甲医院编制收入
  3. 实例学习Ansible系列:颜色与设定
  4. aspose html转换pdf,aspose html转pdf java
  5. C语言之动态内存管理
  6. 【AP/AR】借项通知单和贷项通知单的区别
  7. Numpy中矩阵向量乘法np.dot()及np.multiply()以及*区别
  8. 苹果手机语音备忘录在哪_苹果手机的录音功能在哪?教你快速开启,想录音太方便了...
  9. 用Python制作二维码
  10. k8s 配置存储之 Configmap secret