本教程操作环境: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
暂无评论内容