java 后台通过IO流把文件传到前端并下载
2018-08-15 16:22
387 查看
我的业务需求是两个不同的web程序放在不同的服务器上,web程序A要访问到web程序B上传上来的文件,所以用到了这一个IO读取文件的接口
JAVA代码(排版有点问题 已经尽力补救了(:3_ヽ)_)
[code]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流访问文件的后台全部代码了。希望能帮到你们
阅读更多相关文章推荐
- 前端数据传到后台动态生成Excel文件并提供文件下载
- 前台数据通过AJAX传到JAVA后台并存入到txt文件中
- java后台通过IO流访问图片(带压缩代码)让前端显示图片
- java后台简单从阿里云下载文件通知前端以附件的形式保存
- java后台简单从腾讯云下载文件通知前端以附件的形式保存
- Java基础之IO流,通过字节流缓冲区进行媒体文件的复制操作
- 关于java Io流的操作,复制(多个文件)、删除、剪切、下载网络资源
- java实现通过samba上传和下载文件
- Java 通过 HTTP 下载文件
- java 通过 URL 类和 URLConnection类 以及输入流实现文件下载功能
- web通过from后台java上传文件
- java通过struts实现web中的文件下载
- java中io流下载文件实例
- java 通过sftp服务器上传下载删除文件
- web版用户通过浏览器下载图片java后台代码
- java 两个通过java代码操作FTP的类,上传下载删除,获取文件
- java通过ftp上传、下载文件,遍历文件目录
- Java基础之IO流,通过字节流对媒体文件进行复制操作
- java 文件实现 文件下载 io流下载
- 通过java的io流将本地文件读取到控制台,并将文件内容再次写入另一个文件中