servlet下载中文文件名处理

今天碰到一个关于servlet下载时,如果文件名称为中文,那么下载下来的文件名就会出点问题,今天似乎解决了这个问题,记录下:

 

package com.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentLength(22);
	    response.setContentType("application/x-download");
	    String filename = "测试中文.java";
	    filename = new String(filename.getBytes("GBK"),"ISO8859_1");
	    response.setHeader("Content-disposition", "attachment; filename=\"" + filename + "\"");
	    try{
	    	OutputStream os = response.getOutputStream();
	    	FileInputStream fis = new FileInputStream("D:\\Documents\\App.java");
	    	byte[] b = new byte[1024];
	    	   int i = 0;
	    	   while ((i = fis.read(b)) > 0) {
	    	    os.write(b, 0, i);
	    	   }
	    	   fis.close();
	    	   os.flush();
	    	   os.close();
	    }catch(Exception ex){
	    	ex.printStackTrace();
	    }
	}

	
	
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值