</pre><pre name="code" class="java">String filename = KsActionUtils.getDownloadPDFFilename(stus.get(0));
String attachFilename = DownloadUtils.encodeFilename(request.getHeader("user-agent"), filename);
response.setCharacterEncoding("UTF-8");
response.setContentType(DownloadUtils.getContentType(filename));//"application/octet-stream"
response.addHeader("Content-Disposition", "attachment; filename=\"" + attachFilename + "\"");
InputStream is = new BufferedInputStream(new FileInputStream(file));
OutputStream os = new BufferedOutputStream(response.getOutputStream());
try {
int len = 0;
byte[] b = new byte[100];
while ((len = is.read(b)) > 0) {
os.write(b, 0, len);
}
response.setStatus(response.SC_OK);
response.flushBuffer();
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(os != null){
os.close();
}
if(is != null){
is.close();
}
}
encodeFilename:
/**
* 根据不同浏览器设置下载文件名
* @param agent
* @param fileName
* @return
*/
public static String encodeFilename(String agent, String fileName) {
try {
// IE
if (null != agent && -1 != agent.indexOf("MSIE")) {
fileName = URLEncoder.encode(fileName, "UTF-8");
// Firefox
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
} catch (UnsupportedEncodingException e) {
try {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
return fileName;
}