【问题解决】后端如何以文件流的形式返回本地资源给前端,提供下载服务_java inputstream 返回前端流包含pdf png mp4_努力的小豪哥的博客-程序员宅基地

技术标签: java  问题解决  

后端以文件流的形式返回本地资源

//文件地址
String path = "PDFpath";

File file = new File(PDFpath);

//读取生成的PDF文件
InputStream inputStream;
OutputStream outputStream;
响应设置 重制输出流

try {
    
   if (file.exists()){
    
       inputStream = new FileInputStream(file);
       outputStream = new BufferedOutputStream(response.getOutputStream());
       byte[] bytes = new byte[1024];
       int len;
       while ((len = inputStream.read(bytes)) != -1){
    
           response.getOutputStream().write(bytes,0,len);
       }
       outputStream.flush();
       outputStream.close();
       inputStream.close();
   }
    } catch (FileNotFoundException e) {
    
        e.printStackTrace();
    } catch (IOException e) {
    
        e.printStackTrace();
}

在接口测试中可以使用postman的Send And Download进行测试。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43849468/article/details/115864679

智能推荐

如何使用SpringMVC +Hibernate Validator实现从配置文件读取自定义错误信息并解决读取中文乱码问题-程序员宅基地

1.hibernate的校验框架validation所需要jar包2.spring-mvc.xml添加validator配置 <mvc:annotation-driven validator="validator"></mvc:annotation-driven> <bean id="validator" class="org.springf...

boost::asio::error的用法-程序员宅基地

此文转自:一般而言我们创建用于接收error的类型大多声明如下:boost::system::error_code error 我们用这个类型去接受在函数中产生的错误如socket.connect( endpoint, error);如果连接失败,错误类型会保存到error中,比如连接主机失败可能会返回这样的错误boost::asio::error::hos

安装Pycharm和Anaconda报错问题(包含目录下只显示Anaconda Prompt的情况等)_please open anaconda prompt,-程序员宅基地

这几天学习python的过程中,安装和使用Pycharm or Anaconda出现的问题,结合自己亲身体验和网络搜索(网络上尝试过一些小伙伴的方法,觉得还不错有整理进来,谢谢小伙伴的分享。)总结如下几个方面:1、安装过程中出现failed to create anacoda menue的解决办法 安装过程中,前面的默认安装选项是否有更改呢,想必你一定更改了安装位置吧,最好不要..._please open anaconda prompt,

vue父子组件嵌套 锚点定位_定位嵌套vue-程序员宅基地

父子、祖孙组件组件嵌套,父级容器监听了scroll事件:在子、孙子组建中点击相应的标题,定位到对应的位置,实现平滑滚动。参考文章:https://blog.csdn.net/iceking66/article/details/78211213?locationnum=1&fps=1一、在子组建中设置:子组件页面设置如下:菜单项:“topMenu” 为菜单数组<button v-f..._定位嵌套vue

html5 表单 重置,css修改input表单默认样式重置与自定义大全-程序员宅基地

链接地址:以下测试大部分都是在谷歌浏览器1.隐藏input等表单的默认样式背景textarea,select,input{-webkit-appearance: none; -moz-appearance: none; -o-appearance: none; appearance: none;}2.清除input表单number的样式input[type=number] {-moz-appear..._重置input样式

unity 代码更改图片配置-程序员宅基地

/// <summary> /// texture格式设置 /// </summary> void FormatTexture(Texture2D texture) { //拷贝配置文件时会自动更改配置 return; if (texture == null) retu...

随便推点

nodejs系列学习:简单的http请求服务器-----(一)-程序员宅基地

nodejs系列学习:简单的http请求服务器—–(一)首先安装啊什么的就跳过了1、编写文件server.jsvar http = require('http');var server= http.createServer(function(req,res){console.log(res);res.write('hello');res.end();});server.listen(9

【WebGIS面试经验】(三)本可以表现得更好的面试_webgis面试题-程序员宅基地

一、前言本来打算停一停应聘,再学一段时间技术的。结果来个个挺不错的公司来我们学校宣讲。然后我就投简历了……就这就有了这次的面试经历。GIS开发工程师,广州,私企,第一面为现场宣讲会综合面试,第二面为技术面试(线上腾讯会议)。而我的简历上,关于技术部分是这么写的:(真就只有这么一点)二、面试问题做个自我介绍吧你主要是使用什么语言开发的?网络开发方面的基本问题:post和get有什么不同你刚才说比较了解OGC标准,说说WMS和WMTS的区别你刚刚说WMTS服务涉及到切片,说说你对切片层_webgis面试题

转载程序员「奇葩」说-程序员宅基地

http://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=402105111&idx=1&sn=d2901def95937f3a737f6171ec0b8b2a#rd转载于:https://www.cnblogs.com/liuxiaocao/p/5126422.html

选车必看:汽车动力详细计算实例(2)_变速箱机械效率怎么计算-程序员宅基地

(本文代表我个人观点,仅供读者参考)详细分析一辆车的动力参数有利于对目标车型实际使用时出现的各种情况作出预测,这对于注重汽车性能的中国成熟汽车消费群体来说很有必要。我们将采用计算汽车驱动力、结合行驶速度、风阻系数、公路坡度和乘员数量等参数深入分析汽车动力,和车友从运动理论角度分享爱车的动力情况,在新购买车辆时可以选到既满足需要,性价比也合适的车型。物理学知识告诉我们:所有阻碍车辆行驶的..._变速箱机械效率怎么计算

使用http://rap2.taobao.org/写测试接口文档-程序员宅基地

下面以设计评论接口为例,简单说明接口文档应该如何撰写。首先,我们可以定义全局返回状态码。返回码返回信息说明10000获取评论成功10001创建评论成功10002⽆无法创建评论创建评论时因违反审核机制⽽而⽆无法创建10003评论已被删除查看评论时评论因不不和谐因素已被删除获取文章评论。GET /articles/{article-id}/comments/开发者:王勤勤最后更新时间:2018年年8月10⽇标签:v 1.0接⼝说明:_http://rap2.taobao.org/

成为一名嵌入式Linux开发工程师需要学习哪些知识?_屏幕嵌入式linux开发工程师-程序员宅基地

随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开发和研究,这使得嵌入式Linux在新兴的嵌入式操作系统领域内也获得了飞速发展和广泛应用。面对如此火热的行业,如何才能成为嵌入式Linux开发工程师?成为一名合格的嵌入式Linux开发工程师需要学习哪些知识?  一:C语言  嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程_屏幕嵌入式linux开发工程师