pageoffice实现了在线编辑office文件.在保存时我们一般要传递一个文件的原路径,用于在后台的保存方法进行保存使用.但是保存方法是跟pageoffice有一定的耦合,不能灵活进行传参.pageoffice提供了一种方式,可以通过在页面的input标签,在后面使用一个api进行接收,下面上代码,
/**
* 打开在线编辑页面
*/
@RequestMapping("editFileInfo")
public String editFileInfo(String fileId, HttpServletRequest request){
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage(request.getContextPath() + "/poserver.zz"); // 此行必须
FileInfo fileInfo = fileService.getFileInfoById(fileId);//根据自己系统获取上传文件对象
//添加保存按钮
poCtrl1.addCustomToolButton("保存并关闭","Save",1);
//设置保存的url
poCtrl1.setSaveFilePage("saveFileInfo");
if(fileInfo == null)
throw new IllegalStateException("系统找不到该文件");
String fileType = fileInfo.getType();
OpenModeType openModeType = OpenModeType.docNormalEdit; //默认doc
if ("xls".equals(fileType) || "xlsx".equals(fileType))
openModeType = OpenModeType.xlsNormalEdit;
else if ("doc".equals(fileType) || "docx".equals(fileType))
openModeType = OpenModeType.docNormalEdit;
else if ("ppt".equals(fileType) )
openModeType = OpenModeType.pptNormalEdit;
else if ("vsd".equals(fileType) )
openModeType = OpenModeType.vsdNormalEdit;
else if ("mpp".equals(fileType) )
openModeType = OpenModeType.mppNormalEdit;
User user = getCurUser();
String savePath = "xxx"; //根据自己系统获取文件的实际存放路径
poCtrl1.webOpen(saveFullPath.toFile().toString(), openModeType,"管理员" );
poCtrl1.setCustomToolbar(false);//隐藏自定义工具栏
poCtrl1.setCaption("wing");
poCtrl1.setTagId("PageOfficeCtrl1"); // 此行必须
request.setAttribute("poCtrl", poCtrl1);
request.setAttribute("savePath",savePath );//传递文件路径到页面
return "pageoffice/view/editFileInfo";
}
<%
PageOfficeCtrl poCtrl=(PageOfficeCtrl)request.getAttribute("poCtrl");
String savePath = (String)request.getAttribute("savePath");//在后台打开编辑页面的方法中放文件路径到request域
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>office文件编辑</title>
<script type="text/javascript" src=" jquery.min.js"></script>
<script type="text/javascript" src=" pageoffice.js" id="po_js_main"></script>
</head>
<body>
<%--用于向保存请求的方法传递参数--%>
<input id="savePath" name="savePath" type="hidden" value="<%=savePath%>"/>
<script type="text/javascript">
//保存
function Save() {
document.getElementById("PageOfficeCtrl1").WebSave();
window.external.close();//关闭POBrowser窗口
}
</script>
<div style="width:100%; height:100%;">
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
</div>
</body>
</html>
//编辑后保存
@RequestMapping("saveFileInfo")
public void saveFileInfo(HttpServletRequest request, HttpServletResponse response){
FileSaver fs = new FileSaver(request, response);
String savePath = fs.getFormField("savePath");//获取传递的文件路径参数
fs.saveToFile(savePath);
fs.close();
}