首页 » 技术分享 » 浏览器内置打开方正CEB是文件进行阅读

浏览器内置打开方正CEB是文件进行阅读

 

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是文件进行阅读,转载请注明来源!

0