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;
-
-
-
-
public class ManageAction{
-
/**
-
* 通过流把文件传到前台下载
-
* @param request
-
* @param response
-
* @param id 第几个文件 (因为有多个文件 用;号隔开的)
-
* @param tzggid 对应的通知公告id
-
*/
-
-
-
public void findfile(HttpServletRequest request,HttpServletResponse response,
-
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
---------------------------------------------------------------------------
国之殇,未敢忘!
南京大屠杀!
731部队!
(有关书籍《恶魔的饱食》)以及核污染水排海等一系列全无人性的操作,购买他们的食品和为它们提供帮助只会更加变本加厉的害你,呼吁大家不要购买日本相关产品
昭昭前事,惕惕后人
吾辈当自强,方使国不受他人之侮!
---------------------------------------------------------------------------
作者:三号小玩家
出处:https://www.cnblogs.com/q1359720840/
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 版权信息
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库