您的位置:首页 > 编程语言 > Java开发

java 文件下载代码,个人认为这是最简单的,只需三步,即可下载。

2017-03-08 15:17 561 查看
今天给大家带来最简单的文件下载办法,大家按照步骤,三步就可以下载下来。
1、下面这个是下载文件的主方法,大家可直接复制到工程里面,加入jar包就可以了。
/**
* 下载文件公共方法,直接调用即可下载
* @param pathUrl 所要下载的文件的路径
* @param name   下载后文件的名称,因为考虑到很多文件在上传的时候,都是被改了名字的,这里可以修改回来
* @return
*/
public HttpServletResponse downloadFile(/*HttpServletResponse response,HttpServletRequest request,*/String pathUrl, String name)
{
try
{
//这里获取一个 response 对象,如果不知道怎么获取的话,那么你也可以把   HttpServletResponse response 当做一个参数传递到这个方法中,直接使用即可
HttpServletResponse response = getResponse();

if ((pathUrl == null) && ("".equals(pathUrl))) {
return null;
}

File file = new File(pathUrl);

//这里获取服务器的绝对路径。如果不会用的话,用下面注释掉的方法就可以
String filePath = getServletContext().getRealPath("/");
//用下面的方法前,需要把HttpServletRequest request当做一个参数传递到本方法中,直接使用即可
//String filePath = request.getSession().getServletContext().getRealPath("/");

InputStream fis = new BufferedInputStream(new FileInputStream(filePath + pathUrl));

byte[] buffer = new byte[fis.available()];

fis.read(buffer);

fis.close();

response.reset();

OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "ISO-8859-1"));

toClient.write(buffer);

toClient.flush();

toClient.close();

response.setContentType("application/octet-stream");
//这里的addHeader方法,如果报错,请使用下方注释掉的方法。
response.addHeader("Content-Length", file.length());
//把第二个参数更改为String 类型即可
//response.addHeader("Content-Length", String.valueOf(file.length()));
}
catch (IOException ex)
{
ex.printStackTrace();
}

return null;
}


2、第一步仅仅是一个方法,一般是用来封装起来的。我们在下载的时候  是需要走控制器或者action 的,下面实例一个:
@RequestMapping(value="/downloadExcel.do")
@ResponseBody
public void downloadExcel(/*HttpServletResponse response,HttpServletRequest request,*/@Param("pathUrl")String pathUrl)
throws Exception{

downloadFile(/*HttpServletResponse response,HttpServletRequest request,*/pathUrl, "test.xlsx");//主要在这一步调用下载的那个方法就可以了,

}


3、最后一步,您需要在页面上面加一个a标签,调用刚才action或者控制器,您就可以实现下载了
<li> excel模板下载: <a href="downloadExcel.do?pathUrl=test.xlsx" style="color :red;" target="_blank">点击这里</a></li>
好了,大工告成,您在页面上点击这个下载的按钮,看看是不是就可以下载了呢?下载之后的文件名称是不是已经改成您想要的名称了呢?如果您成功了,点个赞吧!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息