基于Web的文件上传管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Web的文件上传管理系统
作者:张雁陈若昱
来源:《电脑知识与技术》2014年第24期
摘要:该文开发了一套基于Web方式的文件上传系统,此系统的基本设计理念是简单高效,主要为了解决大量文件向一个地方集中的问题。为了保持系统简洁,本系统只有一个简单的IP地址和用户名的对应文件作为配置文件,使用NTFS的数据流属性来记录每个上传文件的IP及原始文件名信息。本系统分为三个部分:上传端、管理员端以及文件服务器。经实测,该系统的系统稳定性较好,响应速度快,可以很好地实现预期功能。
关键词:Web;Apache;PHP; NTFS数据流
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)24-5689-03
在电力系统的日常管理中,不可避免地要传递各种文件。传递文件一般有一个类似文件汇聚点,其他人的文件都向这一点汇聚。现在一般传递文件是通过Email方式,对于少量的文件这种方式是较为实用的。对于大量(>100)的文件传输来说,采用Email方式的接收端处理过程十分麻烦,下载,管理以及合并删除操作都十分费时费力。因此,开发一个简单实用的文件上传管理系统是十分必要的。
1 系统结构
系统的整体结构如图1所示,整体包含三个部分,有多个文件的上传者,一个文件汇总者,还有一个服务器用于存储文件。这三个部分的区别是逻辑上的,文件汇总者和服务器也可以合二为一。本文所开发的系统服务器所需要的资源很少,不会对文件汇总者的正常使用带来干扰。
2 具体实现方式的选择
正如前文所说,如果不采用Email方式,那么根据目前技术发展的现状,可采用的方式包括:1)Ftp方式;2)SVN方式;3)Web方式。
下面进行逐一分析:
2.1 Ftp方式
这种方式采用Ftp客户端方式上传下载,远端需要一个Ftp 服务器。上传后的文件可采用操作系统自带的文件管理功能进行删除和归类以及归档。Windows XP系统上自带一个Ftp客户端,可以进行上传和下载。不幸的是,从Windows 7以后,系统不再自带Ftp客户端,无法
上传文件了(但还可以通过浏览器ftp下载)。如果要使用这种方式,需要自行安装一个Ftp 客户端,如filezilla, cuteftp等等来进行上载。此外,为了防止意外删除远端文件,还需要在ftp客户端分配用户名和密码,并在ftp服务器端进行一些权限设置。
2.2 SVN方式
SVN是subvesion network的简称,本质上是一种版本管理工具。利用它也可以完成文件的上传,下载,以及库中文件的管理。和Ftp类似,SVN也需要安装客户端,常用的客户端有tortoiseSVN等。同样地,为了防止意外删除远端文件,也需要在客户端分配用户名和密码,并在服务器端进行一些权限设置。
2.3 Web方式
这种方式客户端不需要安装任何软件,直接使用浏览器即可完成文件的上传下载。
考虑到客户端使用的方便性和简单性,本文所开发的文件上传管理系统使用了Web方式,它在客户端不需要安装任何软件。使用浏览器完成所有的文件操作。为了更简化上传的方便性,也不需要给客户端分配用户名和密码,直接在服务器端利用不同的IP进行限制即可。
服务器端的软件使用了Apache,它是目前占有率第一的Web服务器,可以方便地应用在Windows、Linux、Unix、Mac等各种计算机平台上。为了开发这个web文件上传系统的功能,我们还选择了PHP语言。PHP是一种面向对象的、完全跨平台的语言,解释型的语言。它开发周期短,学习简单,功能强大,尤其是在字符串和数据库处理方面。选择它也符合我们开发这套系统简洁高效的意图。
3 系统介绍
整个系统把人分为两种角色:上传者和管理者,对应可分为两大模块,上传模块和文件管理模块,各自的功能划分可参考表1。
从表1中可以看出,上传模块的功能比较简单,主要就是上传文件和查看已经上传的文件,界面可参考图2。上传文件时只需要选择文件并上传即可,不需要用户名和密码登录系统,减少了中间环节,提高了效率。
图3是文件管理模块的主要界面,这个界面主要列出了已经上传的文件的信息,包括文件名,文件大小,上传时间,上传者等等。还可以根据上传时间,文件名以及上传者来对文件排序。还有就是一些文件操作,如下载,合并和删除等等。前面的选择框可以使操作者同时操作多个文件,提高了效率。
需要说明的是,这些模块都是在服务器端部署和运行,本质是都是一些PHP程序。无论是上传者还是管理者,他们只需要一个浏览器即可,不需要额外安装其他的任何软件。
下面主要说一下实现中几个问题的处理过程,即上传者,管理员,合并操作以及不使用数据库的文件管理:
3.1 上传者
从之前的介绍中可以得知,客户端在上传文件的时候并没有输入用户名和密码,那么服务器是怎么判断上传者的呢?原因是在服务器端存在一个配置文件,这个文件存放着IP地址和用户名之间的关系,文件的内容如图4所示。
从图4中可以看出,用户名和IP地址之间并不是一一对应的,一个用户名可以对应多个IP地址。这是因为考虑到电力系统的实际情况,虽然电力系统内部的IP地址是固定的,但客户端可能会更换IP上传文件,所以要允许一个用户对应多个IP地址。
如果IP地址没有对应用户名,那么说明要么这不是一个合法的文件,要么就是图4中内容还没有更新。此时用户名处会直接显示IP地址,服务器端再更新图4的配置文件以后,此时会显示新的用户名。
从后面的描述中可知,本系统的IP地址是存放在文件的附加流中,这样会让各个功能模块之间尽可能“正交”,减少互相传递和依靠的信息,也就减少了相互的干扰。
在具体实现时,PHP有一种关联数组,本文使用了它来描述用户名与IP地址的对应关系。由于关联数组采用了Hash技术,查询会非常快。
3.2 管理员
从图4中可以看出,第一行为管理员的IP。当系统发现是管理员的IP登录时,自动调用图2所示的界面,否则调用图3所示的界面。这种利用IP而不是用户名/密码机制的方法大大简化了使用。因为电力系统内部均使用固定IP,这种配置方式是可行的。
3.3 合并操作
一般上传的文件都为office的文件,包括doc, ppt, xls等等。传统的方法是将其逐个下载然后处理。实际上,因为PHP文件可以调用OLE,可以直接对office格式的文件直接处理。在实际工作中,一般都是合并多个文件,即将多个office的同类文件合并成一个文件。这样可以减少中间步骤,提高效率。
3.4 不使用额外配置文件的文件管理