java下载文件总结
最近做一个下载文件,下载到指定的目录下面,发现下载后文件只会保存的服务端指定的目录,这就很鸡肋,因此总结一下下载的感想,下面方法可套用于下载任何文件,也可用于下载保存在数据库的文件。
特别注意:前端页面请求不能使用Ajax,可以使用a便签
首先看原先鸡肋的代码:
String path="D:\\javamyWorkSpaceEclipse\\DownLoad\\WebRoot\\images\\1.png";
FileOutputStream fileOutputStream =null;
InputStream fis =null;
try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
// 以流的形式下载文件。
fis= new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
//D:\\download为指定下载到该目录下
fileOutputStream= new FileOutputStream("D:\\download\\"+filename);
fileOutputStream.write(buffer);
} catch (Exception ex) {
ex.printStackTrace();
}finally {
if(fis!=null) {
fis.close();
}
if(fileOutputStream!=null) {
fileOutputStream.close();
}
}
正确的下载方式:
String realPath = request.getServletContext().getRealPath("images");
String path=realPath+"\\0803046.V3";
OutputStream toClient =null;
InputStream fis = null;
try {
/* 下面是从需要下载的地方将文件以流的形式读取出来,这里根据不同需求不一样的写法,如果是ftp下载的话这一部分需要另外写,此处只是模拟 */
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
// 以流的形式下载文件。
fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
/* 下面是将读取出的流放到response的输出流中 */
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + file.length());
toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}finally {
if(fis!=null) {
fis.close();
}
if(toClient!=null) {
toClient.close();
}
}
java下载文件总结相关推荐
- SpringBoot后台java下载文件及注意的地方
SpringBoot后台java下载文件及注意的地方 下载效果 后台关键代码 控制类中 @RequestMapping("/file") @ResponseBody public ...
- Java下载文件时文件名出现乱码(但文件内容正常)
今天写文件下载时,发现以前忽略的问题,写个小记录 我们一般使用中文操作系统,所以要求的 文件名编码最好是utf-8,国际化一点 但是,似乎实际上不是这样 1. String fileName=new ...
- java文件损坏_用java下载文件 - 文件损坏
这里是我的code.i写这个下载MP3苍蝇,视频文件&图像. 我用FileOutputStream中处理文件.. 的所有文件都下载好.. MP3文件working..but图像和视频被破坏用j ...
- Java下载文件记事本打开不换行问题
Java下载文件记事本打开不换行问题,其他编辑器可以换行: 原因是下载的内容用的是\n,而win记事本是用的\r\n java 将\n转换为\r\n String script = editText. ...
- java 下载文件内容为空_java 下载文件 内容为空。
Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空 SLF4J的全称是Simple Logging Facade for Java,即简单日志门面. SLF4J并不是具体的日 ...
- java下载文件以及预览
java下载文件以及预览 1.代码如下 /*** 不需要返回HttpServletResponse,会报错* @param response*/@GetMapping("/downloadF ...
- java线程下载文件_使用多线程在Java下载文件
我正在做一个类似IDM的下载器,我已经读到了这篇关于它的文章.我已经实现了我的第一步代码. 下面是Downloader类的代码:package download.manager; import jav ...
- Java下载文件时文件名中的中文变成下划线,其他正常
问题: 问题源码 package com.lm.cms2.controller;import org.springframework.stereotype.Controller; import org ...
- ie11 java 下载文件_Javaweb实现上传下载文件的多种方法
在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为commons-f ...
- JAVA下载文件的几_详解Java文件下载的几种实现方式
Java文件下载的几种方式,具体如下: public HttpServletResponse download(String path, HttpServletResponse response) { ...
最新文章
- MySQL编码引发的两个问题
- 面试 10+公司,囊获 8 个Offer,面经全公开
- Python中的retry
- MATLAB对函数做评估
- JAVA实现SFTP实例(JSCH)
- python调用所有函数_python 调用函数
- Lazarus 日志工具 MultiLog
- “fatal error C1010”错误解决的三种方法
- Apache(阿帕奇) 配置环境及使用(保姆级教程)拒绝繁琐
- 短信API接口比较常见的回调状态
- ubuntu 12.04下Trackpoint 小红点灵敏度和速度调整
- 正高、正常高、大地高
- Slurm的前处理prolog和后处理epilog
- const T vs. T const by Dan Saks
- php微信公众号消息推送
- 输入法自定义短语笔记/md常用配置/搜狗输入法自定义词库推荐
- Mongodb入门(CRUD与安装)
- 恶意软件分析实战02-分析3个恶意程序
- android局域网播放视频播放器,手机播放器播放局域网内电脑本地的视频
- 解决方案:java.lang.IllegalArgumentException: 为此cookie指定的域[localhost:xxxx]无效
热门文章
- 算法导论:快速找出无序数组中第k小的数
- 记一次 DISTINCT 导致的 SQL 效率问题
- 1、Doherty放大器之宽带拓展理论
- Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份。方法:getSalary(int month) 根据
- rails 安装 ‘mysql2’ gem时的报错和解决方案
- 层次聚类(Hierarchical Clustering)——CURE算法详解及举例
- CCF NOI1010. 邮寄包裹 (C++)
- oracle统计学生成绩c,sql - 关于学习成绩统计
- Java(运用ArrayList集合)实现学生系统搜索学生信息功能
- 网易云课堂html笔记