您的位置:首页 > 其它

通过流方式导出文件,防止文件名中文乱码

2014-01-02 14:53 429 查看
public void exportImei(Long orderId,Integer imeiType,Long itemId,HttpServletRequest request,HttpServletResponse response) throws IOException{
		HttpSession session = request.getSession();
		List<ItemIMEI> itemImeis = iUserTradeSvc.queryDeliveryItemIMEI(orderId, imeiType, session);
		List<String> imeis = new ArrayList<String>();
		String name = new String();
		for(ItemIMEI itemImei : itemImeis){
			if(itemId.equals(itemImei.getItemId())){
				imeis = itemImei.getItemIMEI();
				name = itemImei.getItemName()+".txt";
			}
		}
	    BufferedOutputStream bos = null;
	    try {
		  response.setContentType("application/txt");
		  String agent = request.getHeader("USER-AGENT");//用户代理
          // 防止中文文件名乱码
         if (null != agent && -1 != agent.indexOf("MSIE")) {
             String codedfilename = URLEncoder.encode(name, "UTF-8").replaceAll("+", "%20");
             response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
         } else if (null != agent && -1 != agent.indexOf("Mozilla")) {
             String codedfilename = MimeUtility.encodeText(name, "UTF-8", "B");
             response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
         } else {
             response.setHeader("Content-Disposition", "attachment;filename=" + name);
         }
	      bos = new BufferedOutputStream(response.getOutputStream());
	      for(String imei : imeis){
	    	  bos.write(imei.getBytes());
	    	  bos.write("\r\n".getBytes());
	      }
	    } catch (IOException e) {
	    	returnText(response, "导出IMEI失败!");
	    } finally {
	      if (bos != null)
	        bos.close();
	    } 
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: