|  | @@ -0,0 +1,62 @@
 | 
	
		
			
				|  |  | +package com.jeeplus.common.utils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | +import java.io.FileInputStream;
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.io.OutputStream;
 | 
	
		
			
				|  |  | +import java.io.UnsupportedEncodingException;
 | 
	
		
			
				|  |  | +import java.net.URLEncoder;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 本地服务器文件下载工具类
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +public class ThisLocalityDownloadUtil {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void download( String fileName,HttpServletRequest request, HttpServletResponse response) {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            //读取服务器的文件下载路径
 | 
	
		
			
				|  |  | +            String paths = this.getClass().getResource("/").getPath();
 | 
	
		
			
				|  |  | +            String filePath = paths.substring(1, paths.length() - 16);
 | 
	
		
			
				|  |  | +            System.out.println("===========os.name:"+System.getProperties().getProperty("os.name"));
 | 
	
		
			
				|  |  | +            //判定当前系统是否为linux版本
 | 
	
		
			
				|  |  | +            Boolean isWindows = System.getProperty("os.name").toLowerCase().contains("linux");
 | 
	
		
			
				|  |  | +            String path = "";
 | 
	
		
			
				|  |  | +            if(!isWindows){
 | 
	
		
			
				|  |  | +                path = filePath+"WEB-INF/classes/dot/"+fileName;
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                //如果是linux系统 则需要在路径前加上一个 /
 | 
	
		
			
				|  |  | +                path = "/"+filePath+"WEB-INF/classes/dot/"+fileName;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            downCfg(fileName, request, response);
 | 
	
		
			
				|  |  | +            OutputStream out;
 | 
	
		
			
				|  |  | +            FileInputStream inputStream = new FileInputStream(path);
 | 
	
		
			
				|  |  | +            out = response.getOutputStream();
 | 
	
		
			
				|  |  | +            byte[] buffer = new byte[1024];
 | 
	
		
			
				|  |  | +            int len;
 | 
	
		
			
				|  |  | +            while ((len = inputStream.read(buffer)) != -1) {
 | 
	
		
			
				|  |  | +                out.write(buffer, 0, len);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            inputStream.close();
 | 
	
		
			
				|  |  | +            out.close();
 | 
	
		
			
				|  |  | +            out.flush();
 | 
	
		
			
				|  |  | +        } catch (IOException e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void downCfg(String fileName, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
 | 
	
		
			
				|  |  | +        // 判断浏览器,进行不同的加密,这样下载的时候保存的文件名就不会乱码
 | 
	
		
			
				|  |  | +        String userAgent = request.getHeader("User-Agent");
 | 
	
		
			
				|  |  | +        // 针对IE或者以IE为内核的浏览器:
 | 
	
		
			
				|  |  | +        if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
 | 
	
		
			
				|  |  | +            fileName = URLEncoder.encode(fileName, "UTF-8");
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            // 非IE浏览器的处理:
 | 
	
		
			
				|  |  | +            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));
 | 
	
		
			
				|  |  | +        response.setContentType("application/octet-stream;charset=utf-8");
 | 
	
		
			
				|  |  | +        response.setCharacterEncoding("UTF-8");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |