
收修改稿日期:2004-01-09
基于PHP 的网络图片管理
王 昊
(南京大学信息管理系 南京210093)
【摘要】 详细讨论PHP 技术相对于其它动态网页技术的优缺点;分析基于PHP 技术管理网络图片的两种方法:使用PHP +FT P 进行图片文件化管理的实现步骤;使用PHP +MySQL 实现图片数据化管理的一种算法。最后比较了这两种方法的优缺点。
【关键词】 P HP 图片 文件传输协议 数据库管理 【分类号】 TP 393.4
Web Pictur e Management Based on PHP
Wang Hao
(I nf or mation Ma nagement De pa rtment o f N anjing University ,Na njing 210093,China )
【Abstra ct 】 This ar ticle discusses the advant age and disadvant age of PHP ;detailedly analyzes two methods of managing web pictur e based on PHP :mana ging picture files based on P HP +FTP cont rasts wit h managing pictur e data based on PHP +MySQL .
【Keywor ds 】 PHP P icture F TP Database management
1 引 言
随着网络时代的到来,网络技术已经逐步运用到
国家经济、文化建设等各行各业中,Internet 已经成为人们获取信息不可缺少的手段。网络技术发展到今天,已经日趋成熟。人们对于网络文章内容的表现形式以及网络的开发技术也都提出了更高的要求:在网络文章中使用图片、声音、动画等多种媒体;使用动态网页技术,实现数据内容与数据表现的分离。正是由于上述不同的需求的出现,动态网页技术与多媒体应用的结合已经势在必行。本文就如何使用动态网页技术(PHP 技术)来实现对多媒体信息中的网络图片的管理进行详细深入的多方面的探讨。2 PHP 技术概述
动态网页技术,到目前为止,比较常用的有4种:
¹CGI (Common Gateway Interface);ºASP(Active Ser ver Page);»PHP (P ersonal Home P age );¼JSP(Java Server P age )。
PHP(Personal Home Page)是英文“超级文本预处理语言”(PHP:Hypertext Preprocessor )的缩写,
是Rasmus Lerdorf 推出的一种跨平台无缝运行服务
器端的HTML 嵌入式脚本语言,主要用于Web 服务器端的计算以及文字、文本处理。
PHP 的工作原理如图1所示。PHP 动态网页技术采用目前流行的Client/Server 运行模式,其基本原理是:使用PHP 技术编写的动态网页保存在Web 服务器内,当客户端用户向Web 服务器发出访问动态页面的请求时,Web 服务器将该页面提交给PHP 网络程序解释引擎;解释引擎执行特定定界符(PHP 标记等)内的脚本代码以实现不同的功能,将执行结果返回给Web 服务器;最终,Web 服务器将执行结果转化为HTML 语句,连同原页面文件中的HT ML 内容以及各种客户端脚本(JavaScript 和VBScript 等)一同传送给客户端,通过浏览器显示出来。从而实现网页的动态显示,服务器和客户之间有效地交互。
之所以选择PHP 这一动态网页技术来实现网络图片的管理,是因为其具有如下的优点:
(1)P HP 遵循GU N 的约定,完全开放源代码,可以通过多种方式获得技术上的支持;用户可以自由修改其源代码,扩充其内部函数库,使P HP 无论在Unix 或是WinNT 平台上都可以便捷地开发运行于Web 服务器的应用程序,实现各种功能。
(2)PHP 大量借鉴了C 、Java 、Per l 等语言中的语言风格
图1 PHP的工作原理
和语法框架,结合自身的特性,具有比CGI或ASP执行速度更快、功能更强的特点。对于那些具有编程经验的用户来说,掌握P HP编写Web应用程序不需要花费太大的精力。
(3)PHP支持目前绝大多数数据库的存储与处理,具有许多连接各类数据库的函数,还可以自己编写外围的函数间接存取数据库,这使编写支持数据库的网页变得非常简单。其中P HP与MySQL数据库管理系统是绝佳组合,可以实现无缝连接,对MySQL数据库的存取,不会带来额外的开销。
(4)P HP支持相当多的Inter net通讯协议(P rotocol),包括与电子邮件相关的IM AP,P OP3;网管系统SNM P;网络新闻NNT P;帐号共用NI S;文件传输协议FT P;全球信息网HTT P及Apache服务器;目录协议LDAP以及其它网络协议相关的函数。
(5)用P HP编写出来的Web后端程序,可以轻易地移植到不同的操作系统上。可以先在熟悉的Window2000系统环境上对系统进行设计测试,而后将系统移到Unix或Linux系统下,在Unix/Linux系统负荷过高时,又可以快速地将整个系统移到SUN工作站上。所有这些移植都不用修改PHP程序。面对快速发展的Inter net,这是长期规划的最好选择。
(6)PHP基于模块思想,符合模块化的设计。这使其具有很好的可扩展性,加入相应的新模块,可以使PHP的功能得到增强,并且对其执行速度也不会造成不良的影响。
(7)P HP易与HT ML网页融合,执行效率高。和其它的解释性语言相比,PHP系统消耗较少的系统资源。P HP4.0的Zend脚本引擎实现了从“当语法分析时解释执行”到“先编译再执行”的巨大变化,提高了执行速度。
此外,PHP语言还具有可靠的安全性能(这一点ASP系统是望尘莫及)、稳定性非常高以及面向对象编程等优点。PH P的最佳编程平台是Apache+ MySQL+PH P,其中所有的软件都是免费的,这样的平台是最经济的选择,成本与效益比最好。当然,PHP 也有缺点,其不足表现在:
(1)P HP技术缺乏规模支持和多层结构支持。而大负荷站点必须采用分布计算数据库,并将应用逻辑层和表示逻辑层彼此分开,P HP缺乏这种支持。
(2)数据库接口支持变化大,不统一。由于电子商务系统数据库的多样化,因此P HP技术不利于用来创建电子商务系统。
(3)安装复杂。Apa che+M ySQL+P HP+Linux平台的安装与扩展模块的安装都相当复杂。
(4)缺少正规的商业支持,这也是自由软件共同的缺点。
以PHP技术作为开发工具,而其黄金搭档Linux作为操作系统,Apache作为前台Web服务器,MySQL作为后台数据库管理系统,即以组合Linux+PHP+Apache+MySQl作为网络图片管理的开发平台。以下论述在这种平台下使用两种技术来实现对网络文章中图片的管理。
3 基于文件传输协议(FTP)的图片文件管理实现方法
传统的做法是将网络文章中的图片以文件的形式上传存储在FT P文件服务器中,然后使用动态网页技术(PHP)将该文件的URL地址插入到文章的适当位置加以显示,对于过期不再使用的图片则由管理员或文件上传者加以删除。这种方式以图片文件原有的形式存放在FT P服务器文件夹中,文件格式没有转换,减少文件出错的概率,用户比较容易接受。
在前面的论述中提到PHP技术支持相当多的Internet通讯协议(Protocol),其中就包括对文件传输协议(FT P)的众多函数支持。这也就决定了PHP 技术能够以文件管理的方式来实现对文章中图片的有效管理,以文件夹(File)来管理(存储)所有上传的图片。
3.1 上传图片
文章中的图片将以文件的形式存在于FTP文件服务器中,对于整个文件的上传,使用文件传输协议(FT P)的技术来加以实现。文章与其图片之间的相关性通过文章中嵌入图片的U RL地址来体现,因此可以使用两个界面来分别完成文章及其图片的上传。
一般来说,先上传文章中所要用到的图片,取得该图片的U RL地址(即图片在文件服务器中的路径)及其它基本信息,这样在上传文章时,可以将该地址复制(嵌入)到文章中。上传图片按下列步骤进行,括号内为该步骤所使用的PHP函数:
(1)连接FT P服务器并登录,选择所要上传的图片文件(ftp connect()、ftp login());
(2)取得该图片文件名,此时PHP会自动生成一个随机文件名,也可以将图片上传者以及图片大小等信息附加到文件名上,以保证所有上传的图片不重名,防止图片间相互覆盖(fopen()、basename());
(3)生成图片文件的上传路径,即确定文件保存路径,该路径是ftp fput()函数中的参数;
(4)上传图片文件,断开FTP连接,并返回图片文件的URL地址,即http://路径文件名(ftp fput()、ftp quit())。
3.2 在文章中嵌入图片URL地址并显示该图片
图片上传到FTP文件服务器中后,将其嵌入到文章中,使其在文章中加以显示。下面介绍两种嵌入方式:
(1)图片要在网页中显示,也就是说要通过I E解释器的解释,那就必须加上图片的HTML标记符,并设置图片对象来源地址。又因为图片以纯文件的形式存在,将图片取出不需要任何的读出程序,可以直接使用图片的URL地址(即http://图片路径文件名)来引用图片。鉴于此,可将图片标记符中图片来源设置为图片的URL地址,然后将整个图片标志符如 (2)不使用图片的HT ML标记符,将图片的U RL地址直接嵌入到文章中需要插入图片的位置。这样,I E浏览器显示文章时,图片位置将显示图片的URL地址,而不是图片内容。为了将该UR L地址转化为图片,在显示文章程序中要进行转化:将所有由“htt p://”开头的字符串进行HTM L编码,即根据文件类型加上HTM L的图像标记符或超级链接标记符(……)等。这种方式不仅适用于图片的U RL 地址解释,还可以根据文件类型将文章中所有UR L地址转化为超级链接。但是文章显示程序设计比较复杂,并且会消耗大量的系统资源。 在单纯的网络图片管理显示中,建议使用第一种方法,简单且实现速度快;如果还存在其它文件的超级链接,则可以考虑使用第二种方法,不同类型文件的URL地址统一处理,功能强大,方便用户。 3.3 删除网络文章图片 图片在FT P文件服务器中以文件形式存在于一个File文件夹中,在删除图片时,只要删除该图片文件就可以。可以按下面的步骤来显示图片文件列表及实现图片文件的管理,包括删除,转移文件等: (1)连接FT P文件服务器并登录; (2)以列表形式列出指定文件夹(F ile)中所有图片文件及其相关信息,以及对图片文件的操作命令的链接,如删除、转移等等(ft p nlist()); (3)选择文件的操作命令,删除(ft p delet e())或转移图片文件。可以在删除或转移图片文件前使用脚本语句(JavaScr ipt)进行确定验证,防止误操作; (4)断开与文件服务器的连接。 4 基于MySQL数据库的图片数据管理实现方法 由于数据库技术的发展,使用数据库管理多媒体信息也得到了广泛的应用。数据库管理系统能够实现对多种形式信息的管理,包括文本、数字以及二进制信息(声音、图像以及动画等多媒体信息)。前面提到, PHP技术支持广泛的数据库接口,有充分的函数支持与数据库管理系统的连接。特别是MySQL数据库管理系统,PHP可以与其实现无缝内部连接。正是由于数据库技术的成熟以及PH P对MySQL数据库接口的良好支持,我们可以使用PHP+MySQL的绝佳组合来实现对网络图片的有效管理。 4.1 图片数据库的建立 使用MySQL数据库来管理图片,最重要的是数据库表结构的创建。在MySQL中,可以使用二进制类型Blob或者LongBlob来存储二进制图片数据;此外图片的基本信息,如图片名(字符型)、图片大小(数值型)以及图片类型(字符型)等也要保存;最后,还需要表明图片属于哪篇文章,在这里选用数值型字段来表示该图片所属文章的ID,这样就可以实现文章与图片的对应联接。在PHP中,创建该数据库表的基本命令如下所示: create table img(id int(10)auto increment,im g longblob,s ize int(20),img name var char(30),type varchar(10),primary key (id)); 4.2 图片的插入与删除 管理图片的数据库表结构创建好之后,就可以往数据库中充实内容。原则上允许所有的注册用户在上传文章的同时都可以上传图片,应该有专门的图片上传界面。文章与图片的上传顺序有多种方式,在这里我们采用先上传图片,然后上传文章的方式,用到了文章上传界面和图片上传/删除界面,所使用的具体算法如下所示: (1)打开文章上传界面,删除图片表中所有ID为空的记录,在其中打开图片上传子界面; (2)打开(刷新)图片上传子界面时根据不同的条件显示不同的界面(动态网页技术):判断图片表中是否存在ID为空的记录,如果存在,显示ID为空的记录信息(删除图片模块),反之,不显示;显示图片上传模块。即图片的删除与上传模块在同一页面下显示运行,该页面根据用户的选择进行不同的操作:用户命令为“上传图片”,则执行(3),用户命令为“删除图片”,则执行(4); (3)在图片上传模块中,选择要上传的图片(确保文件栏不为空),提取相关信息,如大小(filesize($upfile))、名字(basename($upfile))(系统自动生成)、类型(filet ype ($upfile))等,连接数据库,将图片的二进制流及其相关信息插入到图片数据库中,此时ID号为空,转而执行(2); (4)在图片删除模块中,显示所有ID为空的图片信息,用复选框来标记所有该类图片,选择所有要删除的图片,根据图片名删除数据库中的图片(确保至少有一个复选框被选中),转而执行(2); (5)至于ID号不为空的图片记录的删除,则是在删除文章的同时进行。也就是在删除文章的同时,删除ID等于被删除文章ID的所有图片记录。 上述的整个过程在两个页面程序下实现,充分体现了动态网页技术的整合性、灵活性以及功能多样性;程序根据用户的不同选择执行不同的功能,显示出人机交互的友好性。从这里也可以看到网络信息管理系统在动态网页技术成熟的今天可以方便地加以实现。 值得注意的是,在使用PH P上传图片时,在表单(form)的属性设置中要加入enctype=“multipart/ form-data”;在插入(insert)图片时,要将图片转化为二进制形式:$data=addslashes(fr ead($fp,$files)),其中$fp为文件指针,$files为文件大小。 4.3 图片在文章中的显示 图片存储在数据库中之后,此时图片记录的ID 还是空的,也就是说该图片并不属于任何文章,应该建立图片和文章之间的关系。其实整个过程很简单:切换(注意不是打开或刷新)到文章上传界面,将文章插入到数据库中以后,这时会自动产生一个文章ID (创建文章数据库表时规定的),再将该ID赋值给图片数据库表中所有ID为空的记录。要实现该过程,还必须在每次打开(刷新)文章上传界面时,删除图片数据库表中所有ID为空的记录。这也是为什么从图片上传界面到文章上传界面要切换,而不是重新打开或刷新。 至于图片在文章中具体显示,也是将图片的“地址”插入到文章中需要显示图片的位置,这样图片就可以显示在文章中了。但是,数据库中图片的“地址”不同于文件中图片的“地址”。基于数据库的图片“地址”比较复杂,在PHP中该地址为: 其中为HT ML图片标记,用于显示图片; showpic.php为数据库图片的显示程序,具体算法是:根据传递的参数Name,到图片数据库表中找到该图片信息,直接输出(echo)该图片的二进制形式,作为标志符中sr c 的值。该地址经过HTML解释后,相应图片就展现在用户面前了。到此,图文并茂的文章就通过动态网页技术P HP动态的生成。 在PHP中,数据库图片的“地址”太复杂,不方便用户使用。同时我们发现,不同数据库图片的“地址”除了实参Name的值不同,其它部分都是一样的,因此可以让程序自动生成“地址”。较好的做法是:在图片上传/删除界面的删除模块中,显示上传的ID为空的图片信息以供用户选择删除传错的图片,这时可以让程序自动显示图片的“地址”信息,即:“”。用户只需要将该“地址”直接复制粘贴到文章中具体位置即可。 上面所述的是本人关于使用PHP技术对数据库图片进行管理的方法中某种算法的介绍。整个管理过程可以用图2来描述 : 图2 图片管理过程 5 两种图片管理方法的比较 在上面的论述中,介绍了基于文件传输的图片文件管理和基于数据库的图片数据管理两种方式的基本算法。其实,不仅仅是对图片文件,对于其它形式的文件,如文本文件、声音视频文件等,都可以使用这两种技术来实现网络管理。这两种技术各有优缺点: (1)基于文件传输的文件管理技术将文件从客户端上传至服务器端,前后文件的形式没有发生任何的变化。文件管理者只要了解操作系统,可以方便地在服务器端直接打开文件,进行文件删除、复制、转移等管理操作,而不需要动用其它的资源。相反,基于数据库的管理技术在服务器端要使用数据库管理系统进行数据管理,使用了额外资源,而且数据库管理系统所提供的SQL命令较复杂,特别是那些基于命令的数据库管理系统,需要具有专业知识的数据库管理员来进行数据的管理。 (2)FT P文件服务器安全性上存在很大的漏洞,经常遭到网络攻击和病毒感染,最终导致文件丢失,系统崩溃。因此FT P的管理员经常会对访问者的IP地址进行,使得普通用户文件上传很难实现。而数据库管理系统的安全性能较好,提供了完备的安全机制,如用户标志和鉴定、存取控制和并发控制等保护机制,不易受到网络攻击。 (3)管理者在服务器端可以方便的管理文件,然而在客户端进行间接管理时就不那么方便了。这要求网络设计者提供友好的网络管理界面,而且由于没有专门的文件管理系统与其理论基础,使得管理界面程序设计者会遇到很大困难。相反,在服务器端进行数据库管理需要有专门的数据库管理知识,然而设计者可以编制程序集成封装SQL命令,以友好的界面提供给管理员实现数据有效方便的管理。由于坚实的数据库理论基础以及SQL命令功能的强大,使得界面的设计并不是很困难。 (4)基于文件管理的最大缺点就是使检索操作很难实现。在大量文件中查找所需要的文件犹如大海捞针,困难重重。数据库管理最大的优点却是方便检索,SQL检索命令功能很强大,可以在海量的数据中快速找到所需要的数据。 (5)文件传输速度较慢,不管上传还是读取文件都要经过文件——二进制流——文件的双重转换。而数据插入到数据库表中或从数据库表中读出数据速度较快,只需要完成文件——二进制流(插入)或二进制流——文件(读取)的格式转换,传输速度快。 (6)实现数据库之间的关联非常方便,可以很容易地建立数据与数据之间的关系,但是在文件管理方法中文件之间却很难进行关联。例如,在数据库中可以方便快速地确定某篇文章的所有图片,然而这一操作在文件管理中却很难实现。 从上面两种技术的优缺点比较中可以看出,数据库管理技术作为一项新兴的技术,不仅要求管理者具有数据库专业知识,体现了社会知识化的要求;而且同时也提供了强大的数据库管理功能,弥补了基于文件传输网络文件管理的固有缺陷,使得普通用户可以通过友好界面实现网络数据管理。相信随着数据库技术以及网络技术的进一步发展,基于数据库的数据(网络图片)管理技术将最终取代基于文件传输协议(FT P)的文件管理技术,成为网络中管理多媒体信息的优秀的管理方式。 参考文献: 1 徐峰.基于MySQL的PHP数据库访问技术.计算机时代,2001 (2):25-26 2 颜惠,吴小穗,袁丽芬.动态交互技术及其在图书馆数据库查询中的应用.情报科学,2002(5):518-521 3 曹军.ASP、PHP和JSP的比较研究.现代图书情报技术,200l (4):59-61 4 陈定权,顾梅.实现动态Web网页的4种技术比较研究.信息系统,2002(1):68-70 5 王沫编著.PH P4&MySQL完全实例教程.北京:电子工业出版社,2000 (作者E-mail:ywhaowang@elong.com) (上接第37页) 型端口(L2TP)”设备项。默认情况下首先使用P PTP协议,然后使用L2T P协议,并根据需要自动调整。 »选择一个设备,单击“配置”按钮,打开“配置设备”对话框,选择“远程访问连接(仅入站)”复选框,就可以启用该设备;选择“请求拨号路由选择连接(入站和出站)”复选框。在“最多端口数”中可以调整支持动态端口的设备数,即VPN连接可以同时打开的连接数。 这样,通过软件设置,实现了分馆与中心馆的VPN互联。 参考文献: 1 张浩华等.IP-VPN及其核心技术.沈阳师范大学学报(自然科学 版),2003(7):204-207 2 翁惠明.浅议利用VPN技术构建虚拟专用网.福建电脑,2003(8): 60-61 3 蒲源.浅谈虚拟专用网(VPN)技术.电视技术,2003(1):35-36 4 陶国芳,朱建伟.自己建立VPN.个人电脑,2003(8):177 5 李丹.Windows2000利用Inter net实现虚拟专用网.河北工程技术职业学院学报,2003(6):43-44 6 楚艳萍,季超.VPN连接的建立和配置.河南大学学报(自然科学版),2003(3):80-81 (作者E-mail:jywylang@163.com) (上接第90页) u nlink($upfile); ?> 5 结束语 PHP技术可以应用到图书馆的许多方面,这里只涉及到学位论文远程提交。如果充分利用PHP技术,将会加快图书馆的数字化建设。 参考文献: 1 星空浪子.PH P4中文手册.Ju ly,10,2000.http://www.csdn.net. cns har e/soft/4/4599.shtm 2 晏子.MySQL中文参考手册.http://www.pconlin e.com.cn/ pcedu/em polder/doc/php/m ys ql doc/O.htm 3 袁媛.PHP和MySQL在远程辅助教学中的应用.微型机与应用, 2002(3):42-44 4 沈嵘.论高校图书馆对毕业生学位论文文献的开发与利用.杭州师范学院学报(自然科学版),2001(3):49-51 5 张惠君,耶健,高建忠等.学位论文全文数据库建库研究及其在钱学森图书馆的实现.大学图书馆学报,2002(3):52-54 (作者E-m ail:s hi qm@library.nwpu.edu.cn)
