java下载文件

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.IO流的方式下载

publicHttpServletResponsedownload(Stringpath,HttpServletResponseresponse){
try{
//path是指欲下载的文件的路径。
Filefile=newFile(path);
//取得文件名。
Stringfilename=file.getName();
//取得文件的后缀名。
Stringext=filename.substring(filename.lastIndexOf(".")+1).toUpperCase();

//以流的形式下载文件。
InputStreamfis=newBufferedInputStream(newFileInputStream(path));
byte[]buffer=newbyte[fis.available()];
fis.read(buffer);
fis.close();
//清空response
response.reset();
//设置response的Header
response.addHeader("Content-Disposition","attachment;filename="+newString(filename.getBytes()));
response.addHeader("Content-Length",""+file.length());
OutputStreamtoClient=newBufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
}catch(IOExceptionex){
ex.printStackTrace();
}
returnresponse;
}

2.采用RequestDispatcher的方式进行

jsp页面中添加如下代码:

<%
response.setContentType("application/x-download");//设置为下载application/x-download
Stringfiledownload="/要下载的文件名";//即将下载的文件的相对路径
Stringfiledisplay="最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
filenamedisplay=URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="+filedisplay);

try
{
RequestDispatcherdis=application.getRequestDispatcher(filedownload);
if(dis!=null)
{
dis.forward(request,response);
}
response.flushBuffer();
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{

}
%>

3.将文件下载到页面

注意:实际开发中绝大部分情况都是将文件存储在单独的服务器,但是 也会有一些小文件可以存放在项目中,此处存放在项目目录下,其实代码大同小异,几乎无差别。

<%
response.setContentType("application/x-download");//设置为下载application/x-download
Stringfiledownload="/要下载的文件名";//即将下载的文件的相对路径
Stringfiledisplay="最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
filenamedisplay=URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="+filedisplay);

try
{
RequestDispatcherdis=application.getRequestDispatcher(filedownload);
if(dis!=null)
{
dis.forward(request,response);
}
response.flushBuffer();
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{

}
%>

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容