文件的下载
package sxc;
import org.apache.commons.io.IOUtils;
import sun.misc.BASE64Encoder;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
public class Servlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1、获取文件的名字
String downloadname="美女.jpg";
//2、读取下载的内容
ServletContext servletContext= getServletContext();
InputStream stream = servletContext.getResourceAsStream("/"+downloadname );
// System.out.println(stream);
String mimeType = servletContext.getMimeType("/" + downloadname);
//4、回传前,告诉客户端返回的数据类型
resp.setContentType(mimeType);
System.out.println("返回的数据类型是"+mimeType);
//5、还要告诉客户端,收到的数据适用于下载的(还是通过使用响应头)
//content-Disposition表示收到的数据如何处理
//attament表示附件,表示下载使用
//filename=表示指定下载的文件名
//url编码是为了把汉字转换成为%xx%xx的格式
//支持谷歌和ie浏览器
// resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("女人.jpg","utf-8"));
//支持火狐浏览器,不支持ie浏览器
// resp.setHeader("Content-Disposition","attachment;filename==?UTF-8?B?"+new BASE64Encoder().encode("中文.jpg".getBytes("utf-8")) +"?=");
//如果是火狐浏览器,使用Base64编码
if(req.getHeader("User-Agent").contains("Firefox")){
resp.setHeader("Content-Disposition","attachment;filename==?UTF-8?B?"+new BASE64Encoder().encode(downloadname .getBytes("utf-8")) +"?=");
// 如果不是火狐浏览器使用url编码
}else {
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(downloadname,"utf-8"));
}
//3、把下载的文件回传到客户端
ServletOutputStream outputStream = resp.getOutputStream();
IOUtils.copy(stream,outputStream);
System.out.println(req.getHeader("User-Agent"));
}
}
Base64编码
package sxc;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.IOException;
public class Base64 {
public static void main(String[] args) throws IOException {
String str="你好呀";
//创建一个编码器
BASE64Encoder base64Encoder = new BASE64Encoder();
//调用编码的方法
String encode = base64Encoder.encode(str.getBytes());
System.out.println(encode);
//创建一个解码器
BASE64Decoder base64Decoder=new BASE64Decoder();
byte[] bytes = base64Decoder.decodeBuffer(encode);
String str1=new String(bytes,"utf-8");
System.out.println(str1);
}
}