在IE里打开一个文件,修改后上传.(寻找最佳方案)
在一次项目调查中,面对客户提出的在IE里打开一个office文件,修改后上传的要求进行对应.
在Web里打开Office文档文件,修改后上传
要求:
不是点击文件的link下载
而是直接在IE(Internet Explorer)内打开Excel。
用户对IE内被打开的Excel进行浏览、编集
保存IE内被打开的Excel的編集后UPLOAD。
方案一
注意点2:上传文件,这里要求在IE里打开的文件必须有修改功能
1 Tomcat
步骤A,B
A 在web.xml文档中加入如下等代码
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
说明:但excel却不是从IE里打开的,这和IE的设置有关.
B.在D:\Tomcat42\webapps\webdav\WEB-INF\web.xml将注释放开
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
说明:所要修改的文件必须放在webdav这个目录下面.并具要有修改的权限.
这存在数据安全的问题.
2 在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files\Microsoft Office\OFFICE11\owssupp.dll”。通过这个控件,客户端页面上的Javas cript就可以激活本地的Office软件,来实现打开、编辑Office文档。(另,Office XP应该就已经包含这个ActiveX控件了。)这个必须在本地设定,有局限性;(这项设置是从网络上找的,因为环境的关系没有进行调查)
3 Windows 2003由于缺省没开放WebDAV协议,限制了Office文档的保存.(这项设置是从网络上找的,因为环境的关系没有进行调查)
开放WebDAV方法如下:
1.打开IIS6
2.打开Web Service扩展
3.选中WebDAV,右键,选Allowed
4.try again! is OK???
IIS必须设置为可写入,文件系统everyone可修改权限
(二)在Web里打开Office文档文件
首先,用Script创建一个本地的对象:
openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2"); // 为了兼容Office XP,可以创建“SharePoint.OpenDocuments
openDocObj.EditDocument("http://xxx.xxx.xxx.xxx:8080/webdav/file/Book1.xls");
就可以直接激活Excel,在Excel里面编辑文档,然后直接点击Excel里面的保存功能,就可以将文件保存会服务器上了。注意:为了让Excel能将编辑后的文档直接保存会服务器,访问Excel站点的当前上下文的Windows Identity必须对服务器的相应目录(即http://xxx.xxx.xxx.xxx:8080/webdav/file/这个虚拟目录所对应的服务器上的物理路径)有相应的写权限,否则保存动作会失败。编辑完成后,EditDocument()会返回一个bool值,来反映编辑操作是否成功。
*修改设计后,只能打开office文档,例1.txt文件,此时就无法打开;依据这个就必须先对文件类型进行判断,根据不同的文件类型,执行不同的打开文件的方式.由于只要求调查excel文件的打开,保存,修改;因此,非office 文件的方式没有进行相关的调查.
注意点3:修改后的文件,无法判断是否修改;
(1)先设为以修改时间决定,但是这里要对文件进行多次读写的操作
|
读取文件修改的时间: File类: Java.lang.Object | +――java.io.File File类扩展了object对象,实现了Serializable, Comparable定义的接口,可以通过File的一个实例对jvm上的文件系统进行各种操作
|
这里存在缺陷
A 在word 工具/选项/保存/自动保存时间间隔的功能,一般都设为10分钟,系统会自动保存word,这就存在了,打开一个word 文件后每隔10分钟就会自动保存一次;故会产生新的修改日期,而文件却没有被修改;
B而在Excel里同样在工具/选项/保存/自动保存恢复信息,每隔[]分钟;自动恢复文件保存位置[];
(2)通过比对修改前和修改后文件的内容,这将时个很费时间和资源的设计;(优先级最低)
将文件下载到本地(设一个固定的路径下),没法解决弹出对话框"打开\保存\取消"的问题;(与IE相关)
如果要解决这个问题,可用cvs下载;cvs打开后是excel格式的;但是其它的文件格式doc\txt等就要重新考虑了;
无法解决,用IE打开的问题;不用IE打开,直接用本地的office工具,这就脱离了程序的控制,没办法控制文件的修改和上传了;
这个功能目前存在的问题:
对软件环境有很强的依赖性,必须事前对IE ,服务器,客户端,中间件对其的支持进行调查;有可能会涉及到客户端的设置.(如:下载对话框是否弹出);客户端是否对ActionX控件的支持,是否允许使用.
对直接将数据放在tomcat 下的webdav目录下,并给予了最高权限;这存在着安全性的问题,是否要考虑到.
如果环境不是Tomcat,而是weblogc 如果发布时同时有一个IIS中间件,可以对其进行设置,以达到能对office文件进行在线修改的功能;因为时间和环境的关系没有对其的实现进行调查,并且具体的实现也要调查.
这对软件环境有要求,调查的环境如下:
|
|
|
备注 |
|
数据库 |
|
|
|
IE |
6.0 |
|
|
服务器 |
xp |
|
|
客户端 |
xp |
|
|
Tomcat |
4 |
|

浙公网安备 33010602011771号