




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密级:公开文件上传服务器FUS(file upload service)概要设计项目编号文档版本号2011-12-19归属部门归属项目编写人编写日期中航国际金网公司技术部版本历史日期版本简要描述信息作者2011-12-190.1创建该文档高正2012-1-090.2修改部分内容高正2012-01-110.3结构进行了调整高正2012-1-160.5评审后初步定稿高正分发清单文档接收者组织部门目 录1前言41.1编写目的41.2适用范围42项目概述42.1背景42.2目标53概要设计53.1工作模式53.2文件上传组件的设计63.3FUS Server设计83.3.1物理部署方式83.3.2核心类的设计103.3.3文件路径命名约定124数据库设计145项目目录结构155.1mon包165.2cn.eavic.fus.front包165.3cn.eavic.fus.system包165.4src/main/resource包176文件服务器的后台管理176.1用户管理176.2应用管理176.3Storage Server管理176.4查看所有图片171 前言1.1 编写目的编写该文件的目的是描述文件服务器的框架概要设计,有如下好处:l 确定系统开发功能的范围。l 供设计人员分析时使用。l 运维人员在进行部署时的参考。l 作为软件开发人员进行设计和编码的基础。l 确定系统测试及验收内容。l 软件维护的参考资料。l 作为项目验收标准之一。1.2 适用范围业务或需求分析人员、架构设计师、软件开发工程师、测试人员、项目管理人员。2 项目概述2.1 背景对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。 同时,对于某些应用需要针对某图片进行截取不同尺寸的图片,以节省网络带宽。例如产品图片,往往要提供多个缩略图,例如在列表页为小图,在产品详情页为中图,当鼠标放到中图上再显示大图等。为此上传服务器需要提供图片的适当裁剪成大中小各种尺寸的图片,以适应多种情况。其实,不只是图片耗网络带宽,一切需要下载的文件同样存在着网络带宽的耗用文件。基于以上原因,金网公司开发了文件上传服务器,作为所有新建项目上传图片、文件的统一存放地。为以后的集群、负载均衡等分布式架构提供一定的基础。2.2 目标开发文件上传服务器应用程序,对外提供文件上传服务。通过各种参数的设定来完成图片裁剪、图片转换、是否多文件存储等功能,并将文件路径反馈给任务发起方。目前暂不提供图片生成水印功能。同时开辟后台,可以创建应用、查看图片日志,如所有已上传文件的来源地、日期等信息。3 概要设计3.1 工作模式FUS文件服务器可对N台Web应用服务器提供文件上传服务,Web应用服务器中部署了“文件上传组件”。FUS文件服务器分为两个部分:FUS Service服务器(简称FUS Server)和文件存储服务器(简称Storage Server)。FUS Server负责为其他Web应用提供上传文件和记录功能,所上传的文件被真实地存储在了Storage Server上。Storage Server既作为物理存储服务器,同时为各个Web应用提供所存储文件的外链功能。即:在Web应用上可通过链接的方式(/pic1/app1/jpg/2012/01/04/1326264494843/15201/23102312321.jsp)访问所存储的文件。Web应用服务器与文件服务器的交互过程基本上由4步来完成:第一步:设定FUSConfig各种参数,确定上传模式Web应用服务器中,文件上传组件即fus文件夹需要被放入到根目录下。同时,需要上传文件的页面中,进行配置,构造各种参数。具体参见3.4web应用端配置部分。第二步:用户点击上传按钮由于第一步所设置的参数的不同,本步骤的展现形式也不同,主要分为以下两种情况:情况一:弹出文件选择窗口情况二:弹出多选文件选择窗口第三步:上传文件该步骤为根据文件上传组件自动构造参数,将文件上传到FUS Server中。FUS Server接收到传来的文件信息和各种参数后,将文件转存到指定的Storage Server中,并将日志记录到数据库。第四步:将文件上传后的路径返回到客户端文件上传组件会把文件真实路径反馈到客户端。【第五步:当需要人工裁剪时候才会遇到】进入人工裁剪方式,人工裁剪完毕后继续走第三步和第四步。典型应用场景如下图所示:3.2 文件上传组件的设计文件上传组件为一组js脚本和css样式以及图片、html等的组合。该组件可被放入任何web应用系统中,作为文件上传的支持控件,它不受限于任何其他开发语言(如.net 、java 、php等),但必须基于jQuery1.6以上。其目录结构示例如下图所示该组件的核心部分fus.js;其已整合了开源的基于jQuery的uploadify插件。fus.js所完成的功能:l FUSConfig类的定义,具体属性见下表3-1.l 根据fusConfig来确定点击文件上传按钮后的处理情况。l 构造与服务端需要的参数,并将文件提交到服务器。l 动态显示文件上传进度。l 如果需要人工裁剪,提供人工裁剪功能。l 调用文件上传后的回调函数将文件真实路径反馈给客户端。l 真对FCK有单独的处理过程。表3-1 FUSConfig配置类的属性设定:参数名必须取值范围说明1serviceUrl是字符串表示fus服务器文件上传请求url。例如:/upload.action2appId是数值表示是哪个应用在调用文件服务器的上传。该值是通过本文档4.1创建应用后所得的值。3divId是字符串页面中的div元素id,该元素用来显示已上传的文件信息。4callback是字符串表示回调函数名,即当文件上传完毕后,自动回调的函数名字。5auto否ture/falsetrue表示选择完文件后是否立即上传。false表示最后统一点击上传后才上传文件。6buttonImg否字符串文件上传按钮的图片路径,若无,则为默认图片。7buttonText否字符串文件上传按钮的文字,若无,则为默认文字上传文件。8cancelImg否字符串取消按钮上的背景图片路径。若无,则为默认图片。9displayData否字符串文件上传过程中的文字提示。10sizeLimit否数值所上传的每个文件的最大byte数。11removeCompleted否ture/false上传完毕后,显示已上传文件的div是否自动隐藏。12multi否ture/false表示是否是一次上传多个文件;若无该参数默认为false。queueSizeLimit否数值表示多文件上传时,允许本次上传的最多的文件数。14fileExt否字符串允许上传的文件扩展名,多个扩展名之间用英文分号分割。例如:*.jpg;*.gif;*.png若无该参数,表示文件类型无限制。fileDesc否字符串允许上传的文件扩展名在弹出窗口中的显示提示。例如:图片文件 (.JPG, .GIF, .PNG) 15manuCrop否ture/false该参数只有在mult=false情况下才使用。表示单个图片是否需要人工裁剪,若无该参数默认为false。16picZoom否ture/false表示图片是否需要缩放处理(按照指定的width和height来设置缩放后的图片大小),若无该参数默认为false。若有该参数,则同时必须有width和height参数(可只有1个,若只有一个,则另一个为等比例缩放)。17maxWidth否数值默认1280该参数只有在manucrop =true情况下才使用。表示图片所裁剪的宽度像素数。18maxHeight否数值默认960该参数只有在manucrop =true情况下才使用。表示图片所裁剪的高度像素数。19thumSize否字符串值:小图宽*小图高;中图宽*中图高该参数只有在img=true情况下才使用。表示为该图片提供缩略图,系统会生成小图、中图,他们的名字分别为原图最终文件名添加尾缀字母方式。若无该参数,表示无需生成小图和中图缩略图。例如:原图的上传后最终文件名为 201112190001.jpg 小图文件名为201112190001_s.jpg中图文件名为201112190001_m.jpg20imgConvert否ture/false该参数只有在img=true情况下才使用。表示图片是否需要转换为jpg格式,若无该参数默认为false。userId否null上传文件的用户id3.3 FUS Server设计3.3.1 物理部署方式FUS Server和Storage Server有多种组合方式:1)单一ServerFUS Server和Storage Server同时部署在一台机器上。这也是本次开发首先要支持的方式。2)单一FUS Server,多Storage ServerFUS Server连接多个StorageServer。FUS和Storage的连接,现在采用NFS或GFS方案。即: FUS如同访问本地文件一样,访问各个Storage的目录。对于来自各个WebAPP的调用,FUS根据事先定义的规则,选择其中一台StorageServer,进行存储。规则如下: 每个WebAPP有唯一的id。在FUS Server内数据库中已义了该应用使用的唯一(?)storageServer的domain、IP、NFS下的目录路径。 3)多FUS Server,多(或单一)Storage Server负载增加后,可能会增加多台FUS Server。通过第三方的负载平衡机制/设备,将来自WebAPP的请求分担到多个FUS server,但对外的domain只有一个。3.3.2 核心类的设计UploadAction.java类的功能:要根据uploadify控件决定是用servlet还是action,故此部分目前尚不定,等对uploadify控件研究明白后再定。(1)、负责接收客户端传来的文件上传参数,这些参数是在客户端由文件上传组件进行构造并封装的。其工作模式如下: Form表单属性约定如下:参数名必须取值范围说明1appId是数值表示是哪个应用在调用文件服务器的上传。该值是通过本文档4.1创建应用后所得的值。2files是File页面提交的文件流。3sizeLimit否数值所上传的每个文件的最大byte数。4picZoom否ture/false表示图片是否需要缩放处理(按照指定的width和height来设置缩放后的图片大小),若无该参数默认为false。若有该参数,则同时必须有width和height参数(可只有1个,若只有一个,则另一个为等比例缩放)。5maxWidth否数值表示图片所裁剪的宽度像素数。6maxHeight否数值表示图片所裁剪的高度像素数。7thumSize否字符串值:小图宽*小图高;中图宽*中图高该参数只有在img=true情况下才使用。表示为该图片提供缩略图,系统会生成小图、中图,他们的名字分别为原图最终文件名添加尾缀字母方式。若无该参数,表示无需生成小图和中图缩略图。例如:原图的上传后最终文件名为 201112190001.jpg 小图文件名为201112190001_s.jpg中图文件名为201112190001_m.jpg8imgConvert否ture/false该参数只有在img=true情况下才使用。表示图片是否需要转换为jpg格式,若无该参数默认为false。9userId否数值型可以为空(2)验证参数的有效性。例如:文件大小超过sizeLimit限制。若发现错误,要把错误信息传递到前段页面。appId的验证。 Rerferer中SERVER_NAME是否跟该appId的域名一致。(3)调用相关的工具类完成相应指定的功能,例如:图片缩放、转成jpg、生成缩略图等等。(4)根据预先设定的规则(具体规则详见3.3.4处)将图片保存到指定的Storage Server。根据该appId得到该文件需要存放到哪个Storage Server上,然后根据该Storage的pathPattern属性获得该文件的文件名格式。具体文件路径命名参见3.3.3部分。 接收到的所有文件要记录日志。若发现文件非法或者出现异常,需要返回客户端提示错误信息。(5)将最终文件路径反馈到应用层页面。由文件上传组件得到路径信息,并并调用callback参数(即是所指定的函数名)。AppAction.java类的功能:完成对应用的注册、配置等工作。Web应用的基本属性如下:id 应用的主键appName 应用的名称appInfo 应用描述valid 该应用是否还有效,true/falsecreateDate 创建日期storages 该应用可以存储在某一个或多个Storages Server 服务器上。StorageAction. java类的功能:完成对Storage Server 的注册、配置等工作。每个Storage Sever的基本属性如下:id Storage Server的主键domain 域名,例如: ip IP地址 ,例如 valid 是否有效,true/false local 存储文件的逻辑路径,例如:/pic1/ pathPattern 存储文件的路径的生成格式,例如 %l%a%e%d%t%c5%f info 该服务器的说明createDate 创建日期3.3.3 文件路径命名约定每个Storage在初始配置的时候,都有pathPattern属性,来定义存储文件的路径的生成格式,例如: %l%a%e%d%t%m%c5%f 。各部分的说明如下:文件名必须全部小写默认: %l%a%e%m%f说明配置名路径例1配置文件中的local,如:/pic1%l/pic1/2应用的appID,如app1%a/pic1/app1/3文件的扩展名,全小写,如jpg%e/pic1/app1/jpg4日期,按照/年/月/日的格式%d/pic1/app1/jpg/2012/01/04时间戳取模最后两位/最后三四位,%m/pic1/app1/jpg/43/48/5时间,精确到毫秒%t/pic1/app1/jpg/2012/01/04/13262644948436随机数,可指定位数%c+位数/pic1/app1/jpg/2012/01/04/1326264494843/152017文件名,用户指定的文件名称,时间戳+三位随机数。%f/pic1/app1/jpg/2012/01/04/1326264494843/15201/1326264494843.jpg 4 数据库设计APP (Web应用表 APP)字段名描述类型备注ID主键int(4)DOMAINvarchar (100)APP_NAME应用名称varchar (100)APP_INFO应用描述varchar (1024)VALID是否有效tinyint0-无效 1-有效,默认1CREATE_DATE创建日期timestampSTORAGE (Storage Server服务器表 Stroage)字段名描述类型备注ID主键int(4)DOMAIN域名varchar (100)IPIP地址varchar (15)VALID是否有效tinyint0-无效 1-有效,默认1LOCAL_path存储文件的逻辑路径varchar (100)如/pic1/PATH_PATTERN存储文件的路径的生成格式,如%l%a%e%d%t%c5%fvarchar (100)%l%a%e%m%fINFO该服务器的说明varchar (400)CREATE_DATE创建日期timestampAPP_STORAGE (Web应用表与Storage Server服务器关系表 Stroage)字段名描述类型备注APP_IDSTORAGE_IDFILE_LOG (文件上传日志表) 字段名描述类型备注id主键bigintuuidint(4)文件名,时间戳+3位随机数app_id来自哪个应用int(4)user_idbigint可以为空storage_id来自哪个Storage Serverint(4)relative_path文件真实路径varchar (200)除Storage Local外的全路径,不含文件名,例如:/app1/673/20111219/real_name原文件名varchar (100)客户端在文件上传时,原文件名file_ext文件扩展名varchar (100)file_size文件大小intcreate_date上传日期timestampwidth图片高度pxint(7)只有图片文件才有该属性height图片宽度pxint(7)只有图片文件才有该属性5 项目目录结构fus src/main/java cn.eavic.fus common 提供工具的通用根包 front 对外提供上传服务的根包 action 存放action类 dao 存放dao类 service 存放Service接口 impl 存放Service实现 system 后台管理的根包 action 存放action类 dao 存放dao类 entity 存放实体类 vo 存放值对象类 service 存放Service接口 impl 存放Service实现 src/main/resource 存放该web应用所需的资源文件和配置文件doc 存放该项目的一些相关文件WebRoot common 存放该应用的通用jsp(403.jsp、404.jsp、500.jsp、meta.jsp、taglib.jsp) css 存放该应用的css样式文件 js 存放该应用的js脚本文件 fus.js images 存放该应用的图片文件 WEB-INF content 存放各个功能模块的jsp页面 lib 存放各个jar web.xml 应用的web.xml 5.1 mon包该包内提供了通用工具类,例如,图片裁剪、转jpg格式等。5.2 cn.eavic.fus.front包该包为对外提供上传服务的根包。 cn.eavic.fus.front.action包UploadAction.java该类为实现上传的核心类要根据uploadify控件决定是用servlet还是action,故此部分目前尚不定,等对uploadify控件研究明白后再定。,接收所有参数,具备函数:n public String execute();/进行文件的验证、处理、保存等操作。 cn.eavic.fus.front.dao包FileLogDao.java该类为对所上传文件记录日志的核心类。 cn.eavic.fus.front.service包FileLogServi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030食品广告行业数据驱动营销策略与发展趋势
- 互联网媒体营销合作协议
- 产品供应链合作运营协议
- 企业级IT设备租赁咨询协议
- 2025内蒙古赤峰宁城县鸿蒙高级中学招聘23人备考考试题库附答案解析
- 2025云南易门县紧密型医共体总医院招聘编制外工作人员6人备考考试试题及答案解析
- 买卖协议机动车辆买卖协议
- 劳动合同签订及变更工作指引
- 企业品牌宣传及广告投放协议
- 办公区域共享协议
- 《神经外科颅内压增高》教学课件
- 铁路劳动安全 课件 第五章 安全标志标识
- 教师严慈相济课件
- 肛肠科个案护理
- 果园机器人课件
- 数智时代高校微专业的内涵特征、建设机制与推进路径
- 4第四节决策树与集成算法
- 汽车零部件质量培训
- 眼科学检查课件
- 成都银行招聘真题
- 1.1.1 地球的宇宙环境(第1课时 地球在宇宙中)(原卷版)
评论
0/150
提交评论