PHP在线文库系统的设计与实现

  • 优秀论文奖
  • 文章作者:中国新闻技术工作者联合会 2021/12/30-04:43 阅读: loading...

    阮翔

    (国家新闻出版广电总局831台)

    摘要:笔者根据最近编写的831台信息管理平台阐述了一个PHP在线文库系统的设计与实现,并对系统的总体结构设计和程序作了详细的说明。该系统采用Apache服务器技术,以MySQL作为系统数据库,主要功能定位于通过互联网实现文档的上传下载和在线阅读,实现多种信息资源有机共享。整个系统的结构力求清晰明了,实用美观,方便用户使用。关键词:在线文库 PHP技术 B/S结构 数据库1、绪论随着科技的不断进步和网络技术的持续发展,网络已经成为我们获取信息的首要媒介之一,而文档则是这些资讯的重要载体。网络文库系统,是在线互动式分享文档的平台。文档由用户上传和发布,文库自身不编辑或修改用户上传的文档内容。用户可以在线阅读和下载这些文档,实现资源的有机共享,能保证没有权限的用户不能修改和复制源文档,更好的保证文档的原始性和安全性保护了相关的版权,并对资讯信息进行了有效管理。目前较知名在线文库有百度、豆丁、道客巴巴等。2、背景和意义在线文库能提供信息存储的空间,方便对各类文档的分类浏览和下载保存。以我台为例,早年由于没有统一的存储规范,个人的存储习惯对文档的分类起了决定性的作用。另外许多文件及材料只能通过内部邮件、纸质公示或者口头传达给部门和个人,这样做引起网络资源的浪费、纸张油墨等办公材料损耗或者造成意思传达不清。同时出于安全保密方面的考虑,很多资料只能在内网上传播,而目前的档案系统由于其自身设计和功能原因,并不适合全台职工上传和浏览下载各类资讯。这就需要我们台或者局拥有自己的在线文库系统来解决上述问题。在线文库系统是我所写的831台信息管理平台(如图1)的主要组成部分,现在以此为例,讲述在线文库系统的设计和实现。

    图1:831台信息管理平台首页

    3、实现方式选择要进行文档的在线阅读,我总结后,主要有以下几种实现方式:一、文档用FlashPaper或者print2flash直接转成SWF,最后用FlexPaper实现浏览;二、文档用OpenOffice转成PDF,然后用pdf2swf转成SWF,最后用FlexPaper实现浏览;三、文档用MSOffice转成PDF,然后用pdf2swf转成SWF,最后用FlexPaper实现浏览。先来看第一个方法,它使用Flashpaper或者print2flash实现文档转换成SWF,其实很简单,以Flashpaper为例,程序里使用CMD调用的命令是:C:\Program Files\Macromedia\FlashPaper2\FlashPrinter.exe xxx.ppt -o xxx.swf转换原理是:通过虚拟打印,取得内容直接生成SWF,所以转换一个文档就需要一个虚拟打印机的运行,中间会弹出打印和打开文档的窗口。不能并发使用,也就是说只能同时转换一个文档,这个方案不符合要求。第二和第三个方案多了一个转换成PDF的中间环节, 一个是使用原Sun公司的OpenOffice,一个是使用微软的MSOffice,相比而言OpenOffice不只是一个办公软件,也是一个开发平台,可以基于它提供的应用程序接口组建自己的产品。我更倾向于第二种方案。4、编程语言和工具要设计一个B/S系统,我们首先要确定的就是编写该系统的语言,然后我们根据该系统的功能需求来选择我们所需要的一些工具和插件。4.1为什么是PHP在用PHP之前,我先在Myeclipse上以JAVA+Tomcat为基础参考一些资料写了一个文档在线转换程序(如图2),实现了文档的转换功能。也许是JAVA功底有限,文档大于3M的时候会转换的很慢,容易出现卡死,而且个人觉得PHP在调用效率方面不会比JAVA弱。PHP由1995年结合C语言推出第一个版本发展到目前主流的PHP5乃至PHP6,其语言已经相当成熟。它以其开放、免费、可嵌入HTML、动态处理图像、效率高、基于服务器端可以运行在UNIX、LINUX、WINDOWS下等的特点得到众多程序员的推崇。目前网络上并没有的PHP实现文库的完整代码,有也都是在特定框架下的,比如织梦、帝国等,但是框架所带来的比如不易修改、安全性差等问题也很明显。当然最主要的原因还是我对PHP语言更熟悉,用它来架站和编程对我来说更加方便,也更具有挑战性。

    图2:用Myeclipse实现文档转换

    4.2 工具及插件首先是编译的环境,这里需要Apache+PHP+MySQL+phpMyAdmin+Zend Loader的编译环境,可以使用phpStudy、phpnow等集成工具实现。我们选择Apache+PHP 5.3+ISAPI模式。开发工具出于对eclipse的熟悉,所以此次编程平台选择EclipsePHP Studio,简称“EPP”。EPP使用的Eclipse核心编译,是一个为PHP开发者提供的优秀的大型IDE开发软件。并且集成了JDK和简体中文系统,专门针对辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,实时纠错等功能。同时还增加了协作开发版本服务器功能:SVN,CVS 。我们之前已经选择好了文库的实现方案,所以插件的选择也很明确。主要有办公软件OpenOffice、格式转换软件爱你Swftools和一个开源轻量级的在浏览器上显示各种文档的组件FlexPaper。5、文库结构和数据库设计由于网站需要进行人机交互和大量数据转换和处理,我们的网站结构力求清晰明了,数据库设计要求效率实用。5.1 网站结构程序结构从功能上来分析,前台至少需要一个上传输入页面(如图3),一个文档列表页面以及文档在线浏览和下载页面。后台我们需要数据库连接页面、文档后台转换处理页面、多线程处理页面、分页处理页面和各类自定义变量页面等。图3左侧为我初期构建时网站结构。

    图3:简单的文档上传页面

    FlexPaper需要作为一个独立的组件加到网站里,便于调用。当然为了丰富网站功能,我们还可以加入多个应用系统,以831台信息管理平台为例,除了文库在线系统,还加入了用户登录系统、后台管理系统、工作记录系统、图像浏览系统、数据报表系统(如图4)、信息检索系统等。

    图4:数据报表显示页面

    5.2 数据库结构设计以文库功能来看,我们需要一张存储文档基本信息的表doctable,另外为了方便对文库分类,需要一张分类表docclass,另外为了后面的用户权限和管理,需要一张用户表usertable。这里主要看来表doctable的结构,见表1。

    表1:doctable数据表结构和说明

    字段

    类型

    说明

    Id

    int(11)

    文档顺序

    Docname

    varchar(255)

    文档名称

    Oldocurl

    varchar(255)

    源文档存放地址

    cid

    int(11)

    类别编号

    Docurl

    varchar(255)

    转换后文档存放地址

    Uid

    int(11)

    上传人/操作人

    Title

    varchar(100)

    文档主题

    Author

    varchar(80)

    文档作者

    Addtime

    datetime

    添加时间

    Hit

    int(11)

    点击率

    6、主要编程代码和说明在源代码方面,调用插件实现文档转换的代码是最为重要的,具体如下://调用多线程控制文件,处理并发程序,并开启新线程require_once "control/thread.class.php";$thread = new thread();$thread->addthread('up_sucess','doc');$thread->runthread();//上传成功之后将数据写入数据库function up_sucess($formname){global $db;$fold_path="uploadfile/";//上传文件存放文件夹$docarr=upload_doc($formname,$fold_path);...}function upload_doc($name,$fold_path){...$typestr="|xls|doc|txt|pdf|ppt|docx|xlsx|pptx|";//允许转换的文档类型$type=strtolower(substr($filename,strrpos($filename,'.')+1));...//接着是判断文档时否符合条件,是否有错误,并且设置转换程序最大运行时间,目录不存在就创建目录,代码省略,要注意的是将\替换为/,存储URL的路径要求用/ php程序以及system命令要求用\ 如:str_replace("\\","/",$output_file); ...//然后判断是否是PDF,不是的话调用插件把文档转换成PDF,这里要把commond后面的路径改成swftools安装的路径$command = "C:\\swftools\\pdf2swf -t ".$output_file." -s flashversion=9 -o ".realpath($fold_path)."\\".$swf; ...//将swf文件名返回,我的数据库里面记录的只是文件名,可以根据需要把目录名也记录下来。$arr["docurl"]=$swf;return $arr;}7、要注意的问题和小结在做这个项目的过程里,遇到的问题也不少,比如2007版EXCEL不能被顺利转换,我的解决方法是为这类文档加判断,然后在后台转换成可以被转换的类型,并保留原文档。如果出现乱码问题可能是字符集,文档也可以采用该方式转换,但工具不一定为swftools。用PHP通过上述方法我们可以实现文档的在线转换和浏览,并保存原有文档,让大家快速浏览的同时保证原文档不被修改和没有相关权限的人员下载(如图5)。

    图5:在线文库浏览页面

    在信息流通量日益增大的现在,在线文库的出现很好的提高了信息的准确性和高效性,能更好的保护版权,并对相关资讯进行有效管理。而在831台信息管理平台中占据重要地位在线文库规范和保证了文档资讯的浏览和存储,为我台提供了一个局文件下达公示、部门制度推广阅览、全台职工分享和学习的网络平台,在一定程度上也为迎接大数据时代的到来做好了相关准备。

    参考文献

    [1] 吉尔摩(美) 著,朱涛江 等译.PHP与MySQL 5程序设计(第二版).人民邮电出版社,2007:191-689[2] 孙海涛.如何构建企业信息管理系统[J] .经济论坛,2001(06):12-34[3] 威利(澳) 等著,武欣 等译.PHP和MySQL Web开发(原书第三版).机械工业出版社,2006 :223-578[4] Matt Zandstra.深入PHP面向对象、模式与实践(第2版).人民邮电出版社,2010年5月:97-300 编辑:中国新闻技术工作者联合会

    评论 点击评论