JSP实现下载的痛苦[word、excel、下载乱码]彻底解决下载文件内容及文件名乱码
1: å?ºè??ä??å??éƒ?ä??è??ç??JSPæ??å??ç??ä?‹è??ï?Œæœ?å??ç?? servletçš„æ??å??æ??å??ç??ã?‚ã?‚ã?‚
2:
å?‚æ?œä??å?šè??å??ç??JSPæ??å??æ??ä?‹è??ï?Œæœ?å??é?µé??内javaä??ç
•ä??å??ï?ˆ %%
ç??å ?å??ï?‰ä??è??包å??ä??ä?•å†…å??ï?ˆç?ºæ ?ä??å›?è??ä?Ÿä? å ?ä??
有�
3: å??ç„?javaä??ç •éƒ?分å??ä??有ç?ºæ ? å’Œ å›?è??
4: å…?ä??å??ç??ä??ç •å?‚ä?‹ï?š
%@ page language= java pageEncoding= gbk % %@ page import= org.apache.commons.logging.Log,org.apache.commons.logging.LogFactory % %
Log log = LogFactory.getLog(this.getClass());
String
name_cn=(String)request.getAttribute( name_cn );///è??å ?æ?‡ä??å
ç?? æ ?å? sss.doc
String
abstrUrl=(String)request.getAttribute( abstrUrl );//è??å ?æ?‡ä??ç›
?å??æˆ?ç??å??è??å?„ï?Œä?ºç?ºèµ?é??è??ï??
response.setContentType( application/octet-stream;charset=gbk );
// charset=gb2312
String ffnmae=new String(name_cn.getBytes( gb2312 ), iso8859-1 );//æ ?å??åŒ? å ç??
response.setHeader( Content-Disposition , attachment; filename= +ffnmae);
java.io.FileInputStream in = null;
java.io.BufferedInputStream binpu = null;
java.io.BufferedOutputStream bout = null;
try{
in = new java.io.FileInputStream(abstrUrl);
binpu = new java.io.BufferedInputStream(in);
bout = new
java.io.BufferedOutputStream(response.getOutputStream());
byte[] b = new byte[1024];
int i = 0;
while((i = binpu.read(b,0,b.length)) 0){
bout.write(b, 0, i);
}
bout.flush();
//è??åŠ ä??ä?‹ä??å??è??ï?Œå??åˆ?ä?šæŠ?é??
out = pageContext.pushBody();
response.flushBuffer();
out.clear();
}catch(Exception e){
log.error( ä?‹è??é??è??ï?Œé??è??URLï?š +abstrUrl, e);
}finally{
if(in != null){
try {
in.close();
} catch (java.io.IOException e) {
log.error( å…?é?,æ?‡ä??é??è?? , e);
}
in = null;
}
if(binpu != null){
try {
binpu.close();
} catch (java.io.IOException e) {
log.error( å…?é?-è??å…?æµ?é??è?? , e);
}
binpu = null;
}
if(bout != null){
try {
bout.close();
} catch (java.io.IOException e) {
log.error( å…?é?-è??出æµ?é??è?? , e);
}
bout = null;
}
}
%