您的位置:首页 > Web前端 > JavaScript

解决jsp打开word文档乱码问题

2009-04-21 17:50 435 查看
用jsp打开word,写法如下:

 

 
%@page contentType="application/msword;charset=utf8"%>
<%@page import="java.io.*"%>
<%
String filename = "";
if (request.getParameter("docfilename") != null) {
filename =     request.getParameter("docfilename");
}
File f = new File(filename);
if(!f.exists() || f.isDirectory()){
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>文件不存在");
out.println("<mce:script language=/"JavaScript/"><!--
");
out.println("alert(/"文件未找到/");");
out.println("window.close();");
out.println("
// --></mce:script>");
out.close();
return;
}

response.setContentType("application/msword");
response.setHeader("Content-disposition","inline; filename=mc.doc");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath("" + filename)));
bis = new BufferedInputStream(new FileInputStream(filename));
bos = new BufferedOutputStream(response.getOutputStream());

byte[] buff = new byte[2048];
int bytesRead;

while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}

} catch(FileNotFoundException fe){
System.out.println("文件没找到");
} catch(final IOException e) {
System.out.println ( "出现IOException." + e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
out.clear();
out = pageContext.pushBody();
}
return;
%>


 

点击链接调用该页面,弹出提示窗,打开or下载,选打开,然后word并没有打开文档,而是要求选择编码方式,windows默认 或者其他编码,但经过试验,基本都不能正常打开,而是打开了一堆乱码。

 

我这里,问题出在这句话:response.setHeader("Content-disposition","inline; filename=mc.doc");

 

将里面的"inline" 换成:attachment,

即:    response.setHeader("Content-disposition","attachment; filename=mc.doc");

 

问题解决,不会出现编码选择的提示框,正常打开word。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp 文档 null byte file import