下载文件默认文件名中文乱码问题的解决

下载文件默认文件名中文乱码问题的解决一般是因为没有转码导致。


package sample.server;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

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

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Frame;

public class DownloadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet( HttpServletRequest req, HttpServletResponse resp )
		throws ServletException, IOException
	{
		//此函数对应之前的 Frame frame = 
		//new Frame( GWT.getModuleBaseURL() + "filedownload" + "?id=downloadiframe"+"&filename=" + filename );
		//传文件名那个简单啊
		String filename = req.getParameter("filename");
		
		//这边你要自己决定从哪下载的文件!! 我是把上传路径直接给他了
		//这里说下。。我先前没自己创建 uploads 结果十分悲剧
		//记得在 war 路径下创建 !!
		String filepath = req.getRealPath("/uploads");
		File file = new File( filepath+"/"+filename );


		FileInputStream fis = new FileInputStream(file);
		resp.addHeader("Content-Disposition","attachment; filename=" + filename );//此处设置默认下载文件名,如果是中文肯定乱码,需要做一次ULL转码,Server.UrlEncode(filename)

		ServletOutputStream out = resp.getOutputStream();
		resp.setBufferSize(32768);
		int bufSize = resp.getBufferSize();
		byte[] buffer = new byte[bufSize];
		BufferedInputStream bis = new BufferedInputStream(fis,bufSize);

		int bytes;
		while ((bytes = bis.read(buffer, 0, bufSize)) >= 0)
			out.write(buffer, 0, bytes);
		bis.close();
		fis.close();
		out.flush();
		out.close();
	}
}


转载于:https://www.cnblogs.com/blogyuan/archive/2013/05/16/3082343.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值