java 后台通过IO流把文件传到前端并下载
我的业务需求是两个不同的web程序放在不同的服务器上,web程序A要访问到web程序B上传上来的文件,所以用到了这一个IO读取文件的接口
JAVA代码(排版有点问题 已经尽力补救了(:3_ヽ)_)
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- @Controller
- @RequestMapping(value = "/manage")
- public class ManageAction{
- /**
- * 通过流把文件传到前台下载
- * @param request
- * @param response
- * @param id 第几个文件 (因为有多个文件 用;号隔开的)
- * @param tzggid 对应的通知公告id
- */
- @RequestMapping(value = "/findfile")
- @ResponseBody
- public void findfile(HttpServletRequest request,HttpServletResponse response,@RequestParam("id") String id,@RequestParam("tzggid") String tzggid) throws IOException {
- ServletOutputStream out = null;
- FileInputStream ips = null;
- List<Map<String, Object>> list = null; //此处为业务需要
- list = jdbcTemplate.queryForList("select fjaddress,fjname from tb_tzgg where id = ?",tzggid); //此处为业务需要
- if(list.size() > 0){
- try {
- String url = String.valueOf(list.get(0).get("fjaddress")).split(";")[Integer.valueOf(id)]; //此处为业务需要 如果是测试可以指定路径
- //获取文件存放的路径
- File file = new File(url);
- String fileName=file.getName();
- //获取到文字 数据库里对应的附件名字加上老的文件名字:filename 截取到后面的文件类型 例:txt 组成一个新的文件名字:newFileName
- String newFileName = String.valueOf(list.get(0).get("fjname")).split(";")[Integer.parseInt(id)]+"."+fileName.substring(fileName.lastIndexOf(".")+1);
- if(!file.exists()) {
- //如果文件不存在就跳出
- return;
- }
- ips = new FileInputStream(file);
- response.setContentType("multipart/form-data");
- //为文件重新设置名字,采用数据库内存储的文件名称
- response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(newFileName.getBytes("UTF-8"),"ISO8859-1") + "\"");
- out = response.getOutputStream();
- //读取文件流
- int len = 0;
- byte[] buffer = new byte[1024 * 10];
- while ((len = ips.read(buffer)) != -1){
- out.write(buffer,0,len);
- }
- out.flush();
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- try {
- out.close();
- ips.close();
- } catch (IOException e) {
- System.out.println("关闭流出现异常");
- e.printStackTrace();
- }
- }
- }
- return ;
- }
- }
前端访问:
贴上我自己的数据库让你们更清晰一点
以上就是所有的java通过io流访问文件的后台全部代码了。希望能帮到你们
https://blog.csdn.net/L1481333167/article/details/81705769
java 后台通过IO流把文件传到前端并下载的更多相关文章
- java中的IO流之文件复制
O(∩_∩)O哈哈~ 1.综述 一门成熟的语言肯定具备的几个模块:IO,通信,线程,UI...... Java作为一门成熟的程序语言,其IO流是比较复杂的.上个图大家感受下: 简单分析一下,IO分为两 ...
- Java中常用IO流之文件流的基本使用姿势
所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ...
- java用字符io流复制文件
一.小文件一次快速读写 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- java中的IO流读取文件
1 InputStream类和OutputStream类 InputStream.read()方法从文件中读取一个字节(0-255),然后将此字节转换成对应的整数返回.假设一个文件的编码为utf-8编 ...
- java中使用IO流复制文件
public class TestIO { public static void main(String[] args) { // TODO Auto-generated method stub tr ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java io流 对文件夹的操作
java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...
- java io流 创建文件、写入数据、设置输出位置
java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...
- Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
随机推荐
- Java领域的表现层的三种技术--jsp、freemarker、velocity
10月份忙碌的参加秋招并获得了5个成都.上海.广州等不同地区的工作offer,最终选择了广州,11月底来到公司实习,很快,就跟进了公司的项目了,原本以为可以和宣讲会时报的志愿一样--Java开发,但是 ...
- Vulnstack内网靶场2
环境配置 内网2靶场由三台机器构成:WIN7.2008 server.2012 server 其中2008做为对外的web机,win7作为个人主机可上网,2012作为域控 网络适配器已经设置好了不用自 ...
- WIFI Deauth攻击-爬坑笔记
这里用Aircrack这款工具进行介绍: 准备工作:无线网卡连接电脑或者虚拟机(免驱的最好),如需驱动请自行安装驱动 1.将无线网卡接入测试电脑Linux虚拟机(装有Aircrack-ng) 2.测试 ...
- NXOpen.BlockStyler的一些用法
关于BLOCK UI的一些控件的用法,本人曾经使用的代码,拿出来共享: Option Strict Off Imports NXOpen Imports NXOpen.BlockStyler Impo ...
- 远程设备管理opendx平台搭建-appium和adb的安装
多年不见了,说起来也有3年了我又开始写博客了,这几年我还是没啥长进,还是干测试,但是测试行业的话,我已经成了一个测开了,也在搭建自己的测试网站 本系列文章讲述的是一个系列的第一部分,最终可以搭建一整套 ...
- python jinja2初见
吸取了长城杯的教训,学习python-web迫在眉睫. 正常难度的python_template_injection,由于现在没学面向对象,理解原理比较困难,所以先使用简单版复现:并附上正常版的常用p ...
- 微信小程序添加外部地图服务数据
先上效果: 缘起 使用微信小程序做地图相关功能的时候,有个需求是需要接入自己发布的地图服务.查看微信小程序地图组件文档,发现它对地图相关的支持很少,只有一些基础功能,比如添加点.线.面.气泡和一些常规 ...
- [敏捷软工团队博客]项目介绍 & 需求分析 & 发布预测
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 了解项目整体情况 ...
- 基于docker-compose搭建sonarqube代码质量检测平台
一.需求 在我们开发的过程中,难免有时候代码写的不规范,或存在一些静态的bug问题,这个时候一个良好的代码检查工具就很有必要,而sonarqube正好可以满足整个要求. 二. docker-compo ...
- Noip模拟58 2021.9.21(中秋祭&&换机房祭)
第一次在学校过中秋节,给家里人视频电话,感觉快回家了很开心, 然后还吃了汉堡喝饮料非常爽,颓废了一会儿还换了新机房,$Linux2.0$非常dei,少爷机也非常快, 发现好像测评机又成了老爷机,这就是 ...