今天通过本文给大家分享是关于javaweb的响应(response)下载
以下是我的Demo:
页面我就粘主要部分的代码
<a href = "${pageContext.request.contextPath }/user/courseTab">模板下载</a>
当然,现在的项目大家都使用框架,这里我使用的是(SSM),好了,粘代码
@Controller @RequestMapping("/user") public class UploadController { @RequestMapping(value="/courseTab",method=RequestMethod.GET) public void courseTab(HttpServletResponse response,HttpServletRequest request) throws IOException{ String path = request.getSession().getServletContext().getRealPath("/courseTab/课表上传模板.xls"); DownUtil.downMb(response, path, "课表模板"+DateFormat.formatSimple(new Date())); } }
这里我使用的DownUtil工具类是我自己写的,下来我粘到文章中
package org.cxxy.base.cxsc.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletResponse; /** * @Title: DownUtil.java * @Package org.cxxy.base.cxsc.util * @Description:文件下载工具类 * @author ChoviWu * @date 2017年6月18日 下午2:44:17 * @version V1.0 */ public class DownUtil { /** * * @Description: * @param @param response * @param @param url 文件在数据库的路径 * @param @param base 文件存放的基础路径 * @param @param folderPath 上传所在的文件夹 * @param @return * @param @throws IOException * @return int * @throws */ @SuppressWarnings("unused") public static int downFile(HttpServletResponse response, String url, Integer down, String base, String folderPath) throws IOException { // 文件的名称 String fileName = url.split("/")[1]; System.out.println(fileName); // 文件的后缀 String last = url.substring(url.lastIndexOf(".") + 1); System.out.println(last); // 文件路径 String downFilePath = base + folderPath + fileName; Long fileLength = new File(downFilePath).length();// 文件的长度 if (fileLength != 0) { response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件 try { response.setHeader( "Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1")); response.setHeader("Content-Length", String.valueOf(fileLength)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } BufferedInputStream bis = null; BufferedOutputStream bos = null; FileInputStream fis = null; try { fis = new FileInputStream(downFilePath); bis = new BufferedInputStream(fis); // 输出流 bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesread; // 写文件 while (-1 != (bytesread = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesread); } // 跳转的路径 fis.close(); bis.close(); bos.close(); } catch (FileNotFoundException e) { System.out.println("File is Not Exsist!"); } } else { // 抛异常 response.getWriter() .write("<script charset='utf-8' type='text/javascript'>alert('该资源不存在!');history.go(-1);</script>"); return down; } down++; return down; } /** * * @Description: 下载的模板 * @param @param response * @param @param path 路径名 * @param @param name 模板名称 * @param @throws IOException * @return void * @throws */ @SuppressWarnings("unused") public static void downMb(HttpServletResponse response, String path, String name) throws IOException { Long fileLength = new File(path).length();// 文件的长度 System.out.println("文件的长度:" + fileLength); if (fileLength != 0) { response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件 try { response.setHeader( "Content-disposition", "attachment; filename=" + new String(name.getBytes("utf-8"), "ISO8859-1")); response.setHeader("Content-Length", String.valueOf(fileLength)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } BufferedInputStream bis = null; BufferedOutputStream bos = null; FileInputStream fis = null; try { fis = new FileInputStream(path); bis = new BufferedInputStream(fis); // 输出流 bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesread; // 写文件 while (-1 != (bytesread = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesread); } fis.close(); bis.close(); bos.close(); } catch (FileNotFoundException e) { System.out.println("File is Not Exsist!"); } } } }
下来,我说一下,调用的downMb,我们都知道,在服务器上下载一个文件,
//设置响应头,控制浏览器下载该文件,形参调的是文件的长度 response.setHeader("Content-Length", String.valueOf(fileLength)); //设置响应类型,设置输出流类型 response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件
这里我使用的是输出的Excel文件
接下来就是读文件,写文件了,相信学了java基础的都会接触IO吧,这里我就略过
BufferedInputStream bis = null; BufferedOutputStream bos = null;
这里使用的是缓冲流,因其使用的是浏览器打开文件的下载
下来就是写文件了,写文件也是一贯的套路,先把文件存到buff数据缓冲区,然后将buff的数据输出到浏览器供用户查看
byte[] buff = new byte[2048]; int bytesread; // 写文件 while (-1 != (bytesread = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesread); }
当读写完文件之后,千万别忘了要关闭文件流(当然,关闭流的顺序也不能变)
fis.close(); bis.close(); bos.close();
以上所述是小编给大家介绍的JavaWeb响应下载实例代码(包含工具类),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍JavaWeb登陆功能实现代码,包括了JavaWeb登陆功能实现代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaWeb登陆功能的方法,供大家参考,具体内容如下 首先我们要JavaWeb登陆的基本流程:JSP页面发送请求——>Servlet——>Servlet通过调用方法从数据库中得到数据并将结果返回页面。 我们先建立三个jsp页面,包括login.jsp(登
本文向大家介绍jQuery实现下拉加载功能实例代码,包括了jQuery实现下拉加载功能实例代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所示: 以上代码是小编给大家分享的jQuery实现下拉加载功能实例代码,希望对大家有所帮助!
本文向大家介绍JavaWeb实现文件上传下载功能实例详解,包括了JavaWeb实现文件上传下载功能实例详解的使用技巧和注意事项,需要的朋友参考一下 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 文件上传概述 1、文件上传的作用 例如网络硬盘!就是用来上传下载文件的。 在智联招聘上填写一个完整的简历还需要上传照片呢。 2、文件上
本文向大家介绍javaweb文件打包批量下载代码,包括了javaweb文件打包批量下载代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javaweb文件打包批量下载,供大家参考,具体内容如下 博客地址!http://oldriver.top/ 老司机技术手册 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍javaweb在线支付功能实现代码,包括了javaweb在线支付功能实现代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javaweb在线支付功能的具体实现代码,供大家参考,具体内容如下 2.用户确认提交的信息(confirm.jsp) 3.网站获得第三方支付的信息 文件: merchantInfo.properties p1_MerId=10001126856
本文向大家介绍微信语音上传 下载功能实例代码,包括了微信语音上传 下载功能实例代码的使用技巧和注意事项,需要的朋友参考一下 假如现在有一个按钮 下面就是调用微信jssdk的方法 上传语音的方法 后台调用的方法 需要一个ffmpeg.exe自行下载 调用GetVoicePath AudioHelper类 文中标记红色的需要以下一个类库 放在文中最后链接里面 到时候直接放到项目