在做开发时用户想实现不下载附件的情况下直接浏览附件内容,就是在线阅读。然后想的一个办法就是把附件内容直接通过
l流直接读取到jsp页面。但文档的格式很乱。这次就先做个日记先保存供以后参考。
读取word稳定用到了poi组件所以要下载一个poi的jar包
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String filename = request.getParameter("filename");
filename = new String(filename.getBytes("iso8859-1"),"UTF-8");
StringBuilder fileContent=new StringBuilder();
String fullFileName = getServletContext().getRealPath("/WEB-INF/upload/" + filename);
String perfix=fullFileName.substring(fullFileName.lastIndexOf(".")+1);
if (perfix.equals("txt")) {
FileReader file = new FileReader(fullFileName);
//Reader reader = null;
try {
System.out.println("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
/*reader = new InputStreamReader(new FileInputStream(file));*/
//InputStreamReader read = new InputStreamReader(new FileInputStream(file),"gbk");
BufferedReader reader = new BufferedReader(file);
String lineTxt = null;
while ((lineTxt = reader.readLine()) != null) {
fileContent.append(lineTxt);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}else if(perfix.equals("docx")){
try {
XWPFDocument xwdoc = new XWPFDocument(POIXMLDocument.openPackage(fullFileName));
POIXMLTextExtractor ex = new XWPFWordExtractor(xwdoc);
fileContent.append(ex.getText().trim());
} catch (Exception e) {
e.printStackTrace();
}
}
//String content=String.valueOf(tempString);
request.setAttribute("fileContent", fileContent);
request.getRequestDispatcher("/fileUpload.jsp").forward(request, response);
}
jsp页面
<head>
<base href="<%=basePath%>">
<title>My JSP 'fileUpload.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
${fileContent}
</body>
</html>