在线打开、保存非Web项目目录下的文件

本文介绍如何使用SOAOffice实现非Web项目目录下文档的在线编辑与保存,包括WebOpen方法的应用及SaveDocURL属性的设置。

 

       在项目设计的时候,公司使用的第三方的soaoffice在线编辑文档,虽然soaoffice打开文件的时候,不会从客户端html代码中获取到文档的真实路径,但是为了文档的安全,文档存放目录还是没有放在Web项目的目录下。从soaoffice的例子代码中没有看到有打开“非Web项目目录”中文件的例子代码,但是对soaoffice做了一下研究之后,发现soaoffice是支持这个功能的,在windows下开发的时候打开其他磁盘目录下的文件也是可以的。用一个小例子大家一起分享,下载地址:http://ishare.iask.sina.com.cn/f/10293911.html

       Soaoffice打开文件的原理:

       调用WebOpen方法打开文件,开发帮助中是这样说的:

方法:function WebOpen(Document, WorkMode, UserName, ProgID);

功能:该函数使用HTTP协议从URL直接打开文件。

说明:Document:字符串类型,是相对于当前页面的文档路径。
    
访问页面 Http://yourWebSite/abc/word.asp ,假如要在此页面打开一个文档,

    
如果执行WebOpen("test.doc",2,"张三"),那么打开的文档为:
Http://yourWebSite/abc/test.doc
    
如果执行WebOpen("doc/test.doc",2,"张三"),那么打开的文档为:
Http://yourWebSite/abc/doc/test.doc
    
如果执行WebOpen("../test.doc",2,"张三"),那么打开的文档为:
Http://yourWebSite/test.doc
不管访问的页面路径是什么,如果Document参数的第一个字符是"/",那么表示相对路径是Web根路径 Http://yourWebSite/

经研究发现,其实就是WebOpen的第一个参数是下载文件的相对路径,不一定是什么.doc的文件,动态页也是可以的,在本例子中使用的是downfile.jsp,也就代码中这样写的:

SOACtrl.webOpen("downfile.jsp", 1, "somebody", "Word.Document");

       只要写出来一个downfile.jsp的动态页,访问downfile.jsp可以下载word文件就大功告成了,用上面的代码,肯定可以打开那个word文件。(如果不能打开文件的时候可以用这个方法调试,看看动态页到底能不能下载一个正常的文件)

      

       Soaoffice保存文件的原理:

       在打开文件的方法WebOpen执行之前,soaoffice总是会给SaveDocURL属性赋值,SaveDocURL属性的详细说明看开发帮助,SaveDocURL属性的作用就是:通知控件在用户点保存时,把文件流提交到哪个服务器页面处理接收和保存工作。其实就是相当于form中的action的作用,在表单提交的时候,数据提交到action指向的页。

       SaveDocURL属性指向的页面中创建SOAOfficeX.SaveDocObj就可以获取到文件流,然后处理文档的保存工作。SOAOfficeX.SaveDocObj有一个现成的保存流到磁盘的方法saveToFile,这个方法的参数是一个绝对地址的磁盘路径,只要保证这个路径跟打开的文件磁盘路径一样,那么在客户端点保存的时候,自然就更新文件了;要是这个路径跟打开的文件磁盘路径不一样,那就等于另存文件功能了。提醒:saveToFile不能创建目录,如果目录不存在,结果只能是保存失败。

 

关键代码说明:

/////////////////////////////////////////////////

Simple.jsp 打开文件页

/////////////////////////////////////////////////

SOAOfficeX.SOAOfficeCtrl  SOACtrl = new  SOAOfficeX.SOAOfficeCtrl(pageContext);

// 设置SOAOFFICE中间件服务页面

SOACtrl.ServerURL = "/soaservlet/soaserv.do";

 

SOACtrl.MenubarStyle = 5;

 

SOACtrl.SaveDocURL = "savefile.jsp"; // 保存文件工作由 savefile.jsp处理

SOACtrl.webOpen("downfile.jsp", 1, "somebody", "Word.Document"); //下载文件工作由downfile.jsp处理

 

/////////////////////////////////////////////////

Downfile.jsp: 下载文件

/////////////////////////////////////////////////

String filePath = "D://111//test.doc"; 

重点是这句,其他的代码实现了文件的下载功能,这里的filePath是本例子中测试使用的文件路径,要保证这个 filePath savefile.jsp中的 filePath值一样才能保存文件

 

 

/////////////////////////////////////////////////

Savefile.jsp: 保存文件

/////////////////////////////////////////////////

 

       String filePath = "D://111//test.doc"; //要与 Downfile.jsp中的filePath一致

 

       // 下面的代码功能是保存文件到filePath位置

       SOAOfficeX.SaveDocObj   SOAObj  = new SOAOfficeX.SaveDocObj(pageContext);

 

       try{

              SOAObj.saveToFile(filePath); 

              SOAObj.returnOK();

       }

       finally

       {

              SOAObj.close();

       }

SOAOFFICE - 微软 OFFICE 中间件 SOAOffice 中间件是北京科翰软件为微软OFFICE量身打造的Web中间件,是Web调用Office、存取Office数据的必备中间件。SOAOffice中间件服务器端数据组件和客户端显示控件构成。 SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线(浏览器页面)打开、编辑、保存Office文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Office文档指定位置,并且也能够从Office文档中提取指定位置的数据保存到数据库。 SOAOffice提供这些强大功能的同时,服务器端并不需要安装运行Office软件。通过SOAOffice,在Web世界里,难以驯服的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.Net组件、Java组件、ASP组件、PHP组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Office的具体技术细节交给SOAOffice去做。 SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,手写批注,圈阅签字,手写签名,电子印章、数字签名、模板套红、一键套红等。 科翰软件是国内唯一的微软Office中间件开发商,拥有卓越的自主研发实力和独创的专利技术,其产品SOAOffice不仅畅销国内,而且还远销欧美国际市场,其中世界500强美国Dover集团、可口可乐 Coca-Cola、中石油、中石化等都是SOAOffice产品的忠实客户。 SOAOFFICE中间件主要应用在Web系统下所有涉及编程调用Office的领域,例如: 1. 需要把数据库字段内容填充到Word/Excel指定位置的; 2. 需要把Word/Excel指定位置的内容提取出来保存到数据库字段的; 3. 需要动态生成指定格式的Word文档的; 4. 需要把html页面中表格导出到excel的; 5. 需要在html页面中套打票据、报表的; 6. 需要在html页面中显示复杂报表,并要求精确打印预览及打印的; 7. 需要动态生成中国式复杂格式报表的; 8. 需要在html页面中输入复杂票据的; 9. 使用COM服务器自动化技术调用Word/Excel经常产生死进程或系统不稳定的; 10.Web系统中调用Word/Excel的页面有大量并发用户访问的; 11.使用jacob、jxl、apache poi的; 12.需要在Web中调用Word/Excel,并且追求系统运行稳定、可靠的; 13.最终用户可以浏览 Word/Excel/Ppt 文档内容,但需要禁止复制、粘贴、下载、另存的; 14.需要在html页面中在线编辑Word公文的; 15.需要在协同办公中强制保留Word修改痕迹的; 16.需要在协同办公中手写批注、手写签名、加盖电子印章、模板套红的; 17.需要在新闻编辑中强制保留Word修改痕迹、手写批注、圈阅的; 18.需要在远程教育中实现试卷、作业在线批改的。 19.需要在html页面中把Word转换为pdf的; 20.需要在html页面中快速打开、显示pdf的; 21.需要在Ajax架构里调用Word/Excel的,包括服务器端和客户端Javascript都适用。 22.需要控制不同的用户在Word/Excel中不同的区域中编辑权限的; 23.需要在企业局域网内架设在线Office文档中心、知识管理的; 24.需要在web页面导入导出Excel单元格数据的; ……… SOAOFFICE中间件包括三个内置组件:SOAExcel、SOAWord、SOAPowerPoint。另外企业版还包括支持PDF文件的SOAPDF组件。 SOAOFFICE 中间件采用标准HTTP传输协议,跨平台性好,支持任意Web服务器(IIS,WebLogic,WebSphere,Apache,Tomcat,Domino等),任意服务器操作系统(Win2k, Win2003,Win2008,Linux,Unix等),任意数据库(Access,SQL Server,Oracle,MySQL,DB2,Sybase等),以及任意WEB编程语言和Web架构(C#,Java,VB.Net,PHP,DOMINO,JSP,ASP,J2EE,ASP.NET,Ajax等)。SOAOFFICE同时支持C/S方式的编程和其他支持ActiveX的容器,您可以在VB,Delphi以及C++ Builder中使用中间件,快速创建C/S结构的应用。 SOAOFFICE中间件是一个国际化产品,支持多种界面语言:简体中文、繁体中文、英语、日语、法语、德语等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值