| 
				
				
				
				 | 
			
			 | 
			@@ -0,0 +1,37 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			package cn.afterturn.easypoi.util; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.commons.lang3.StringUtils; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.slf4j.Logger; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.slf4j.LoggerFactory; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.io.UnsupportedEncodingException; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/**根据RFC 5987规范生成disposition值, 解决浏览器兼容以及中文乱码问题 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * @author halfdo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * @date 6/25/2019 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			public class WebFilenameUtils { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger LOGGER = LoggerFactory.getLogger(WebFilenameUtils.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final String DISPOSITION_FORMAT = "attachment; filename=\"%s\"; filename*=utf-8''%s"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 未编码文件名转Content-Disposition值 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param filename 未编码的文件名(包含文件后缀) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return Content-Disposition值 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public static String disposition(String filename) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        String codedFilename = filename; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (StringUtils.isNotBlank(filename)) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codedFilename = java.net.URLEncoder.encode(filename, "UTF-8"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } catch (UnsupportedEncodingException e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.error("不支持的编码:", e); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return String.format(DISPOSITION_FORMAT, codedFilename, codedFilename); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} |