JAVA代码是在SpringMVC框架写的
项目里用过 现在整理下发出来
代码包括java部分和页面jsp部分
一、JAVA
package com.leimingtech.platform.controller;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecgframework.core.common.controller.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author :linjm
* @version :2014-11-26下午09:18:18
* description :
**/
@Controller
@RequestMapping("PreviewApabiController")
public class PreviewApabiController extends BaseController {
@RequestMapping(params = "preview")
public void preview(HttpServletRequest request, HttpServletResponse respone) throws Exception{
request.setCharacterEncoding("UTF-8");//编码设置
String path = request.getParameter("uri");//文件路径获取
File file = new File(request.getRealPath("/")+path);//获取文件绝对路径
if(!file.exists()) return;
String fileName = path.substring(path.lastIndexOf("/")+1);
//设置响应头
respone.reset();
respone.setHeader("Content-type", "application/x-cedx");
respone.setContentType("application/x-msdownload");
//对中文文件名进行编码
respone.addHeader("Content-Disposition", "filename=\""+
new String(fileName.getBytes("gb2312"),"iso-8859-1"+"\""));
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
bis = new BufferedInputStream(new FileInputStream(file));//文件流
bos = new BufferedOutputStream(respone.getOutputStream());
byte[] buff = new byte[2048];
int line;
while((line = bis.read(buff, 0, buff.length)) != -1){
bos.write(buff,0,line);
}
//关闭
bis.close();
bos.flush();
bos.close();
respone.flushBuffer();
}
}
二、JPS
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="t" uri="/easyui-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%
String ctx = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+ctx;
%>
<c:set var="webRoot" value="<%=basePath%>" />
<!DOCTYPE html>
<html>
<head>
<script src="media/js/jquery-1.7.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
function show() {
var url = "${webRoot}/PreviewApabiController.do?preview&uri=upload/test.cebx";
$("#cebIframe").attr("src", url);//通过iframe打开
}
</script>
</head>
<body>
<input οnclick="show();" type="button" value="显示">
<iframe id="cebIframe" src="" width="100%" height="80%"></iframe>
</body>
</html>
原理很简单就是 浏览器调用你电脑上的软件资源打开文件
注意:打开word,pdf,ceb等文件 在没有获得插件或软件支持方提供的API 只能自己去这样写
如果你有 插件(如点聚)或厂方提供的API 是不需要这样弄的
首先你的电脑上必须装有方正的 apabiReader 就是类似PDF阅读器的软件
有一个方正的 .cebx 或 .ceb 后缀名的文件 用鼠标拖到浏览器里打开成功了就可使用下面的方法了
PDF也试过可以打开
只需修改这些地方
例如PDF:
respone.setHeader("Content-type", "application/pdf"); // 这里这里把application/x-cedx修改成application/pdf
respone.setContentType("application/x-msdownload");
word 等其它的类型板式文件 自己去试吧
类型可到tomgcat 下conf 的web.xml找到 或者百度也可以找到
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
转载自原文链接, 如需删除请联系管理员。
原文链接:浏览器内置打开方正CEB是文件进行阅读,转载请注明来源!