添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

文件的下载和Svn的介绍使用

4 年前 · 来自专栏 java生态社区

一、文件的下载

开发环境搭建:

创建一个web项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示:

使用:

文件的下载中主要使用commons-io.jar包中的IOUtils工具类中的copy()方法进行下载的操作(不同的浏览器下载的确认框可能不同)。

火狐浏览器下载确认框
ie浏览器下载确认框

控制层代码示例:

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);