支持的瀏覽器:主要是IE瀏覽器,不支持谷歌 火狐ajax
使用條件:須要安裝微軟的WPS(最好2007及以上的)windows
操做步驟:瀏覽器
下載dsoframer.ocx 控件服務器
操做:將DSOFramer.ocx複製到C:\windows\system32目錄下,jsp
開始->運行->regsvr32 DSOFramer.ocx , 系統會提示DSOFramer.ocx中的DllRegisterServer成功this
註冊成功後就能夠使用了code
// dsoframer.ocx 的使用 JSP部分 <object id="FramerControl1" name="FramerControl1" style="left: 0px; width: 80%; top: 0px; height: 1080px;" classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" codebase="dsoframer.ocx#version=2.3.0.1"> <param name="BorderStyle" value="1"> <param name="TitlebarColor" value="52479"> <param name="TitlebarTextColor" value="0"> <param name="Menubar" value="1"> <param name="TitleBar" value="0"> </object> //codebase="dsoframer.ocx#version=2.3.0.1" 這個是你的控件的版本:本身查看屬性就能夠看到 // dsoframer.ocx 的使用jq部分打開 //得到服務器的地址 function getRootPath(){ //獲取當前網址,如: http://localhost:8083/proj/meun.jsp var curWwwPath = window.document.location.href; //獲取主機地址以後的目錄,如: proj/meun.jsp var pathName = window.document.location.pathname; var pos = curWwwPath.indexOf(pathName); //獲取主機地址,如: http://localhost:8083 var localhostPath = curWwwPath.substring(0, pos); //獲取帶"/"的項目名,如:/proj var projectName = pathName.substring(0, pathName.substr(1).indexOf('/')+1); return localhostPath+projectName; } function getWord() { try { var serverPath=this.getRootPath()+"/AffixFiles/Offices/"+fileName; //根據文件服務器路徑判斷服務器文件是否存在 $.ajax(serverPath, { type: 'get', timeout: 1000, success: function() { document.all.FramerControl1.Open(serverPath, false, "Word.Document"); }, error: function() { document.all.FramerControl1.CreateNew("Word.Document"); } }); } // dsoframer.ocx 的使用jq部分 保存 function saveWord() { document.all.FramerControl1.HttpInit(); document.all.FramerControl1.HttpAddPostCurrFile("files", fileName); document.all.FramerControl1.HttpPost("../../../system/printReportAction_fileUploadOffice.do"); //這裏參數是你的action的地址 } //JAVA ACTTION 部分(action的配置我就不詳細說了) // 用戶上傳的文件 這裏名字需document.all.FramerControl1.HttpAddPostCurrFile("files", fileName); 裏面的第一參數相同 private File[] files; // filesFileName 必須是前面files是與上面相同fileName是固定的 private String[] filesFileName; // 上傳文件的文件名 private String[] filesContentType; // 上傳文件的類型 /** * fileUploadOffice Office文件在線保存 */ public void fileUploadOffice(){ //判斷是否有文件上傳 if(getWriter() == false) return; String exescmd = request.getParameter("execscmd"); String sSavePath = request.getRealPath("/AffixFiles\\Offices") + "/".replace("\\", "/"); FileUploadServer.fileUploadOffice(getFiles(),getFilesFileName(),sSavePath, exescmd); /*try { out=response.getWriter(); out.write(outStr); } catch (IOException e) { e.printStackTrace(); }finally{ out.close(); }*/ } /*屬性的getter和setter辦法 */ public File[] getFiles() { return files; } public void setFiles(File[] files) { this.files = files; } public String[] getFilesFileName() { return filesFileName; } public void setFilesFileName(String[] filesFileName) { this.filesFileName = filesFileName; } public String[] getFilesContentType() { return filesContentType; } public void setFilesContentType(String[] filesContentType) { this.filesContentType = filesContentType; }
我在搞這個的時候主要遇到兩個問題:一個是無法保存到服務器(沒有跳轉到action)能夠保存到本地:我當時是由於使用的是WPS2003換成2010的就支持了,第二個是文件沒傳過去,緣由主要是由於orm
// 用戶上傳的文件 這裏名字需document.all.FramerControl1.HttpAddPostCurrFile("files", fileName);
裏面的第一參數相同
private File[] files;
// filesFileName 必須是前面files是與上面相同fileName是固定的server
這兩個參數對應問題的問題get
這個方法document.all.FramerControl1.HttpAddPostCurrFile("files", fileName); 其實就是模擬一個form表單 裏面有個<input name="files" type="file"/>