处理中文编码Utils
DownLoadUtils.java
import sun.misc.BASE64Encoder;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class DownLoadUtils {
/**
* 参数1: 浏览器版本
* 参数2 : 需要被转换的文件名称
* 返回值 转换之后的文件名称
* @param agent
* @param filename
*/
public static String getName(String agent, String filename) throws UnsupportedEncodingException {
if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
return filename;
}
}
DownloadImgCNServlet
import org.apache.commons.io.IOUtils;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
@WebServlet(name = "DownloadImgCNServlet" , urlPatterns = "/DownloadImgCNServlet")
public class DownloadImgCNServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename= "下载成功文件名.jpg";
String agent = request.getHeader("user-agent");
filename = DownLoadUtils.getName(agent , filename);
System.out.println(filename);
response.setHeader("content-disposition" , "attachment;filename="+filename);
ServletOutputStream outputStream = response.getOutputStream();
InputStream is = getServletContext().getResourceAsStream("img/abc.jpg");
IOUtils.copy(is , outputStream);
is.close();
outputStream.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
import org.apache.commons.io.IOUtils;
可以到下载页下载,是对流的操作