以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [分享]资料管理模块在线预览的实现 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=102179) |
-- 作者:天若千颖 -- 发布时间:2017/6/14 15:15:00 -- [分享]资料管理模块在线预览的实现 开发一个资料管理模块,论坛上很多案例,很容易实现在资料存放列点击打开资料,或者直接保存资料的功能,直接打开的方式是将远程的文档下载到本地的RemoteFile文件夹中,再用本地程序打开,可能可能很多人都有这样的需求,对于一些特定的资料,只能让特定的用户看,不能保存,如何实现? 最近想出了这样一种方案,供大家参考。只能实现PDF、WORD、PPT、XLS、JPG、html文档的浏览,当然,其他格式的文档,只要能知道何时的js,同理可以实现。 基本思路是:当客户端要预览远程的文档时,通过网页的格式来打开,网页可以通过webbrowser来打开。关键就在于如果通过网页的格式来浏览上述文件。 首先,需要一个WEB服务器,这样生成的网页在本地才能打开。 其次: 1.PDF浏览 PDF浏览时最容易的了,我记得论坛里面有一个DLL,可以实现PDF在本地直接预览,但是这里推荐一个更方便的方式,通过PDF.js来预览。目前大家在网上看到的多数PDF在线浏览都是基于这个JS的。 PDF.js下载地址:http://mozilla.github.io/pdf.js/ 直接将下载的安装包放到服务器上即可,PDF预览的格式为:http://mozilla.github.io/pdf.js/web/viewer.html?file=文件地址 在设计PDF预览的窗口的时候,只需要把webbrowser的地址设置为 http://mozilla.github.io/pdf.js/web/viewer.html?file=文件地址即可。 当然,为了文件的安全性,预览结束后,建议把预览的PDF删除掉。 PDF.JS预览: 2.office浏览 推荐使用点聚weboffice插件 ,下载地址,http://forum.dianju.cn/viewtopic.php?f=9&t=82 首先你需要保存三种office文档格式的html源码,见DEMO文件:http://www.dianju.cn/demos/weboffice7/weboffice7-demo.rar 当客户端点击要预览的文档时,将远程的OFFICE文档地址写入html文件,然后将带有文档地址的html文件上传到WEB服务器上,通过打开这个html文件实现office的预览。 通过点聚weboffice预览office的方法比较简单,不需要复杂的服务器环境配置,不足之处是有可能有的时候会直接调用本地的office程序打开远程文件,这样就无法实现保密了,另外,打开远程文件的时候,本地有缓存,在一定的时间内可以复制。 当然,如果不用点聚weboffice的话,可以直接使用微软的office online接口来预览office文档,接口地址是:https://view.officeapps.live.com/op/view.aspx?src=文件地址 不足之处是,这个只支持10M以内的文档,而且,预览的时候微软会下载你的文件到他的服务器,安全性有限,当然,也可以自己搭建web office apps server,建立自己的预览服务器,配置比较复杂,可以参考http://www.cnblogs.com/poissonnotes/p/3238238.html,但是,这个方案好像也不能禁止文件的保存和打印。 点聚weboffice预览 就写这么多,给大家提供一个思路,欢迎探讨。
|
-- 作者:天若千颖 -- 发布时间:2017/6/14 15:22:00 -- office预览还有一个过渡的办法,不过相比来说耗时一点,就是先把office文件转换为PDF,再预览PDF文件,这样就不需要任何组件了。转换的代码见:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=101545&skin=0 |
-- 作者:有点色 -- 发布时间:2017/6/14 15:43:00 -- 谢谢分享。 |
-- 作者:天若千颖 -- 发布时间:2017/6/21 8:03:00 -- 请教色版一个问题。 目前文档查看我的做法是,文件放在FTP服务器上(简称F),当客户端要浏览某个文件时,需要先把该文件下载到本地电脑,然后再将文件上传到WEB服务器上(简称W),这样客户端可以用webbrowser及相关的插件在线浏览文档,当文件从本地电脑上传到W上之后,删除本地文件,当客户端关闭整个程序时,删除WEB服务器上的文件,这样基本做到了一个文件在本地和远程都没有留存。 现在有一个问题是,虽然我存放文件的服务器F和查看文件的服务器W都是一台服务器,IP也相同,但是就是这么一个先下载然后上传的过程,如果文件较大,会很费时间,尤其是网速比较慢的时候,从服务器的角度来看,无非是把一个文档从一个目录移动到了另外一个目录。如果Fox table有命令能够直接在FTP中将该文件直接复制到指定的目录,就省去了中间下载和上传的时间?Foxtale如何实现远程文件的复制呢? 不能用移动,虽然Rename的命令能够移动文件,但是移动之后原来的就没有了,我关闭项目之后是要删除这个用来浏览的web目录的,不然会存在文件被下载的风险。移动之后如果不删除,再移动回去,文件个数一多很难记录文件原来存放的位置。所以,还是只有复制文件比较好。 如果不能复制远程的文件,有没有其他什么迂回实现的方案?
|
-- 作者:天若千颖 -- 发布时间:2017/6/21 8:09:00 -- 我搜到FtpClient有一个 .retrieveFileStream的属性,但是Foxtable的帮助里面没有提到。该属性是否可用呢? http://www.itnose.net/detail/5993.html 感觉这方法也是需要一个函数来存储远程文件的数据,然后再上传,和直接下载和上传文件功能类似吧,而且看帖子里面说大文件不能复制成功。
[此贴子已经被作者于2017/6/21 8:11:03编辑过]
|
-- 作者:有点色 -- 发布时间:2017/6/21 9:07:00 -- 服务器放一个foxtable的项目,用openqq通讯或者http通讯,给服务器发送一个复制的指令。服务器自己把文件复制一下,即可。 |
-- 作者:天若千颖 -- 发布时间:2017/6/21 9:11:00 -- http通讯功能是不是只有高级开发版才有?我服务器上有服务器端,openQQ复制文件的指令如何发?有详细一点的帮助或者例子吗? |
-- 作者:有点色 -- 发布时间:2017/6/21 9:32:00 -- 以下是引用天若千颖在2017/6/21 9:11:00的发言:
http通讯功能是不是只有高级开发版才有?我服务器上有服务器端,openQQ复制文件的指令如何发?有详细一点的帮助或者例子吗?
给服务器openqq发送一条信息【我要复制|c:\\test.jpg|d:\\test.jpg】,接收后,把 test.jpg 复制到 D盘,不就好了? |
-- 作者:天若千颖 -- 发布时间:2017/6/21 11:38:00 -- 没有看到帮助里面相关的用法介绍,消息是发给哪个用户? 用哪个属性,版主说详细一点吧,没有帮助,我们凭空想不出啊。 |
-- 作者:有点色 -- 发布时间:2017/6/21 11:55:00 -- 以下是引用天若千颖在2017/6/21 11:38:00的发言:
没有看到帮助里面相关的用法介绍,消息是发给哪个用户? 用哪个属性,版主说详细一点吧,没有帮助,我们凭空想不出啊。
不是很简单?直接给服务器发送信息就行了。服务器ReceivedMessage事件,取出信息。
http://www.foxtable.com/webhelp/scr/2990.htm
|