文件下载的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
;
@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");
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"));
ServletOutputStream os
= response
.getOutputStream();
byte[] b
= new byte[1024];
int len
;
while((len
= is
.read(b
)) != -1) {
os
.write(b
, 0, len
);
}
}
}
转载请注明原文地址: https://mac.8miu.com/read-504002.html