文件的下载和Svn的介绍使用
4 年前
· 来自专栏
java生态社区
一、文件的下载
开发环境搭建:
创建一个web项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示:
使用:
文件的下载中主要使用commons-io.jar包中的IOUtils工具类中的copy()方法进行下载的操作(不同的浏览器下载的确认框可能不同)。
控制层代码示例:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建service层对象
StudentService stuService = new StudentServiceImpl();
//获取请求参数中的id值
int id = Integer.parseInt(request.getParameter("id"));
//调用service
Student stu = stuService.findById(id);
*获取文件存放的位置
*获取文件的输入流
String realPath = this.getServletContext().getRealPath("/updownload");
String filePath=realPath+"/"+stu.getPhotname();
File file = new File(filePath);
InputStream in = new FileInputStream(file);
//设置请求头中文件的长度
response.setContentLength((int)file.length());
//设置请求头中文件的类型
response.setContentType(stu.getContentType());
//获取文件的真实名字
String realname = stu.getRealname();
//获取请求中的信息
String userAgent = request.getHeader("User-Agent");
//判断浏览器的类型,解决文件下载中中文乱码的问题 true解决ie浏览器 false时解决其他浏览器
if(userAgent.indexOf("msie")>=0 || userAgent.indexOf("like")>=0){
realname=URLEncoder.encode(realname,"utf-8");
}else{
realname=new String(realname.getBytes("utf-8"),"iso8859-1");
//设置请求头,声明处理的类型为文件
response.setHeader("Content-disposition", "attachment;filename="+realname);
//获取输出流对象
ServletOutputStream out = response.getOutputStream();
//拷贝服务器文件到客户端
IOUtils.copy(in, out);
* 关闭资源
out.close();
in.close();
}
注意:
1.下载时中文乱码的解决
//获取请求中的信息
String userAgent = request.getHeader("User-Agent");
//判断浏览器的类型,解决文件下载中中文乱码的问题 true解决ie浏览器 false时解决其他浏览器
if(userAgent.indexOf("msie")>=0 || userAgent.indexOf("like")>=0){
realname=URLEncoder.encode(realname,"utf-8");
}else{
realname=new String(realname.getBytes("utf-8"),"iso8859-1");
}
2.在编写下载代码时需要指定请求头信息
//动态获取tomcat中项目中资源文件的物理存放路径
String realPath = this.getServletContext().getRealPath("/updownload");
String filePath=realPath+"/"+stu.getPhotname();
File file = new File(filePath);InputStream in = new FileInputStream(file);