您的位置:首页 > 其它

web项目,文件下载的Servlet示例

2020-01-15 11:54 260 查看

文件下载的Servlet

package com.web.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URLEncoder;

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 org.apache.commons.fileupload.util.mime.MimeUtility;

import eu.bitwalker.useragentutils.UserAgent;

/**
* 文件下载
* @title DownloadServlet.java
*/
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = -4891566202618309888L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取下载文件的路径
String path = request.getSession().getServletContext().getRealPath("/upload");
//System.out.println(path);

//String filename = "girl.jpg";
String fileName = "美女.jpg";

String encodedFileName = null;
String userAgentString = request.getHeader("User-Agent");
String browser = UserAgent.parseUserAgentString(userAgentString).getBrowser().getGroup().getName();

// 根据浏览器的不同处理中文乱码
if(browser.equals("Chrome") || browser.equals("Internet Exploer") || browser.equals("Safari")) {
// 设置下载头
encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\"");
} else if (browser.equals("Firefox")) {
// 设置下载头
encodedFileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\"");
} else if(browser.equals("Microsoft Edge")) {
// 设置下载头
encodedFileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment;fileName*=UTF-8'zh_cn'" + encodedFileName);
} else {
// 设置下载头
encodedFileName = MimeUtility.decodeText(fileName);
response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\"");
}

// 创建输入流
FileInputStream is = new FileInputStream(new File(path, "girl.jpg"));
// D:\software\Programer\Server\tomcat-8.5.34\webapps\web04\\upload\girl.jpg
//new FileInputStream(path + "\\" + filename);

// 创建输出流
ServletOutputStream os = response.getOutputStream();

byte[] b = new byte[1024];
int len;
while((len = is.read(b)) != -1) {
os.write(b, 0, len);
}
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
一梦如意 发布了92 篇原创文章 · 获赞 1 · 访问量 1028 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐