Yanxiuupload.docx
《Yanxiuupload.docx》由会员分享,可在线阅读,更多相关《Yanxiuupload.docx(19页珍藏版)》请在冰豆网上搜索。
Yanxiuupload
{Yanxiu_upload}
模块设计分析报告
文件状态:
[√]草稿
[]正式发布
[]正在修改
文件标识:
SRT-YXSQ-Upload
当前版本:
1.0
作者:
申俊泽
完成日期:
2012-3-14
尚睿通-研训平台技术组
版本历史
版本/状态
作者
参与者
起止日期
备注
1.0
申俊泽
2012-3-14---2012-3-14
主要分析现有代码和功能
注:
正文部分,只有最后一次变更的内容会以橙色加粗显示。
附录部分,只有最后一次变更的内容会以蓝色显示。
(文字较多橙色刺眼)
0.文档介绍
0.1文档目的
编写研训平台Yanxiu_upload模块分析报告的目的是给出当前该模块内部流程的描述,便于解决当前出现的bug,以及模块的维护和二期开发。
0.2文档范围
本文档适用于当前优化阶段。
0.3读者对象
本文档预期读者对象为本项目组的开发人员,也可用于日后维护人员查询。
0.4参考文献
本项目组相关代码。
0.5术语与缩写解释
缩写、术语
解释
Yanxiu_upload
研修社区的上传模块
1.命名规则
(1)本模块内所有实体类均使用英文名称;
(2)所有工具类以Util结尾;
(3)所有action类以Action结尾;
(4)所有接口以I开始;(目前由于其他项目大量使用online模块的功能暂时不进行此项重构,接口没有以I开始)
(5)所有实现类以Impl结尾;
(6)所有操作底层数据库的类以Dao结尾;
2.模块Yanxiu_Upload的功能简介
Yanxiu_upload模块为yanxiu社区提供文件上传功能,包括头像的上传和资源贴子的上传。
2.1模块提供的功能
1.上传以下格式的文档:
。
2.个人中心上传以下图片格式的头像:
jpg、jpeg、bmp、png
3.将上传的文档转化为swf格式。
4.提供附件多文件上传功能
注:
1.所有上传的原始文档文件均储存在56的/opt/yanxiu/www/doc目录下
2.转换后的文档文件均储存在56的/opt/yanxiu/www/swf目录下
3.所有上传的附件均储存在56的/opt/yanxiu/www/attachments目录下
4.所有上传的头像均储存在56的/opt/yanxiu/www/pic目录下
5.上传文档的存储方式以原文件名的md5值,取前6位,每两位做一层目录,总计三层。
后26位加上原文件的后缀组成新的存储名称。
Swf文件后缀与原文件不同,存储的根目录不同,其他结构均相同。
6.原文件和转换后的swf文件对应关系以及md5值均存储在34-user-filename中。
2.2模块可以扩展的功能
3.模块Yanxiu_online内部分析
此部分以包为结构单元进行分析。
只分析比较复杂的类,简单的类只在列表中列出。
每个类中的get和set方法不单独列举。
3.1src目录:
action包
包名
类名
说明
com.yanxiu.upload.action
UploadAction
处理RPC请求的Action类
3.1.1UploadAction类
说明:
处理所有Upload请求
1.变量分析
变量名
变量类型
说明
备注
SWF_URL
FinalString
swfUrl返回的json变量名称
SOURCE_URL
FinalString
sourceUrl返回的json变量名称
serialVersionUID
Finallong
序列化
MAXWIDTH
Finalint
设定的最大宽度
MAXHEIGHT
Finalint
设定的最大高度
newUpload
File
处理头像上传的file对象
hid
Long
生成的头像id
headId
url
String
头像的存储url
height
Int
头像的高
width
Int
头像的宽
top
Int
裁剪头像时,高度偏移
left
Int
裁剪头像时,宽度偏移
rate
Double
缩放比例
uid
Long
头像所属的用户id
userId
passport
String
社区passport
add
String
上传文件的地址
2.方法分析
方法名
输入
输出
说明
备注
getURLs
Json数据
返回json数据,包括文件的下载地址和swf地址以及转换后的页数
swfUrl、sourceUrl和pageNum
getSourceURL
Json数据
返回json数据---文件的下载地址
sourceUrl
getSWFURL
Json数据
返回json数据---文件的swf地址
swfUrl
getMd5
Json数据
返回json数据---文件的Md5值
modifyHeadImg
String
上传图片并且返回上船后的存储地址
completeHeadImg
Json数据
完成图片上传,根据用户选择的位置和尺寸,最终生成三个头像图片
ret:
false---上传失败
true---上传成功
uri:
middlepic的地址
3.2src目录:
beans包
包名
类名
说明
com.yanxiu.upload.beans
ProgressInfo
监控数据的bean
3.2.1ProgressInfo类
1.变量分析
变量名
变量类型
说明
备注
totalSize
Long
上传文件的总大小
bytesRead
Long
已经读取的字节
fileIndex
Int
传输的文件index
startTime
Long
传输的起始时间
deltaTime
Long
终止传输的时间
uploadedFiles
String
已经上传的文件
fileSize
Long
单个文件的大小
isInProgress
boolean
是否正在传输
isCompleted
boolean
传输是否结束
curFileName
String
当前传输的文件名称
errorMsg
String
错误信息
fileAdd
String
增加的文件名称
3.3src目录:
convertServer包
包名
类名
说明
com.yanxiu.upload.convertServer
ConvertManager
调用文档转换的控制类
DocConvert
文档转换的具体执行类
FileUploadKey
文档上传sqs队列中的key
FileUploadSqsServer
维护文档转换的队列
HttpSqs
配置sqs队列的参数
OfficeManagement
获取文档转换服务
SaveByMd5
将文档以Md5名称散列存储
3.3.1ConvertManager类
1.变量分析
变量名
变量类型
说明
备注
add
Long
上传文件的总大小
filename
Long
已经读取的字节
temp
Int
传输的文件index
2.方法分析
方法名
输入
输出
说明
备注
Convert
boolean
控制文档转换流程
根据文件后缀判断是否需要先转化为pdf
3.3.2DocConvert类
1.变量分析
变量名
变量类型
说明
备注
officeManager
OfficeManager
获取文档处理的句柄
converter
OfficeDocumentConverter
获取执行转化pdf的句柄
2.方法分析
方法名
输入
输出
说明
备注
docConvertToPDF
sourceAdd
String
将文档转化为pdf
返回转化后的pdf地址
pdfConvertToSwc
inputFile
temp
extName
Long
将pdf转化为swf
返回转化时间
3.3.3FileUploadKey类
1.变量分析
方法名
输入
输出
说明
备注
getUndoFileNum
String
SYSTEM_UPLOAD_UNDONUM
返回sqs中存储name
3.3.4FileUploadSqsServer类
1.方法分析
方法名
输入
输出
说明
备注
pushInSqs
tryNum
uid
add
Boolean
将带转换文档放入队列中等待处理
返回操作的结果
3.3.5OfficeManagement类
1.变量分析
变量名
变量类型
说明
备注
OM
OfficeManagemengt
文档处理的句柄
configuration
DefaultOfficeManagerConfiguration
转换默认配置
officeManager
OfficeManager
当前类的实例
2.方法分析
方法名
输入
输出
说明
备注
OfficeManagement
String
根据配置信息初始化officeManager服务
构造器
getOfficeManagement
OfficeManagement
返回officeManagement句柄
getOfficeManager
OfficeManager
返回officeManager
3.3.6SaveByMd5类
1.变量分析
变量名
变量类型
说明
备注
fileName
String
文件名
2.方法分析
方法名
输入
输出
说明
备注
getMd5
String
返回fileName的MD5结果
isExists
md5hex
downloadRoot
String
根据获取的md5文件名和存储位置存储文件
文件存在---Exits
不存在---存储地址
3.4src目录:
daemonThread包
包名
类名
说明
com.yanxiu.online.daemonThread
FileConvertThread
文件转换的静态线程
3.4.1FileConvertThread类
1.变量分析
变量名
变量类型
说明
备注
fileUploadSqsServer
FileUploadSqsServer
文件转化待处理队列
2.方法分析
方法名
输入
输出
说明
备注
Run
执行checkFileQueue
checkFileQueue
循环遍历带转化文件队列,将文件转化为swf
文件存在---Exits
不存在---存储地址
3.5src目录:
database包
该包只包含ConnectionToDatabase类,该类用于JDBC连接。
(只处理一张表,所以没有使用hibernate)
3.6src目录:
servlet包
包名
类名
说明
com.yanxiu.online.servlet
FileUploadServlet
处理文档转换的servlet
3.6.1FileUploadServlet类
1.变量分析
变量名
变量类型
说明
备注
PROGRESS_INFO
finalString
fileUploadSqsServer
FileUploadSqsServer
fileName
String
MAX_LENGTH
finallong
20MB
File_MAX_LENGTH
finallong
20MB
fcThread
FileConvertThread
2.方法分析
方法名
输入
输出
说明
备注
doGet
调用doPost
doPost
文件上传
先判断是否是附件上传(无进度条,多文件),否则调用doUpload处理文档上传
doUpload
处理文档上传
3.7src目录:
ueditor包
包名
类名
说明
com.yanxiu.online.server.ueditor
UeditorUploadServlet
处理回帖信息
3.7.1UeditorUploadServlet类
1.变量分析
变量名
变量类型
说明
备注
File_MAX_LENGTH
finallong
3MB
2.方法分析
方法名
输入
输出
说明
备注
doGet
调用doPost
doPost
文件上传
调用doUpload处理回帖
doUpload
处理回帖
3.8src目录:
util包
包名
类名
说明
com.yanxiu.online.util
Access2db
提供与数据库的相关操作
Contants
定义了upload中的常量
GalleryConstants
根据配置文件设定图片上传常量
IdGenerator
获取唯一的头像id
KeyGenter
获取缓存中的头像key
PicFileUtil
提供图片处理辅助方法
RestServer
搜索的静态线程
UploadListener
上传文档的监听类
UploadMoniter
上传文档的监听控制类
UploadUtil
获取返回地址的辅助类
3.8.1Access2db类
1.方法分析
方法名
输入
输出
说明
备注
getAccess
Connection
获取数据库连接
closeAccess
Con
stmt
boolean
关闭连接
getUidByPassport
passport
long
获取用户id
updateHeadInfo
Uid
hid
boolean
更新用户头像
3.8.2PicFileUtil类
1.变量分析
变量名
变量类型
说明
备注
BIG_HEAD_IMG
finallong
80
大头像尺寸
MIDDEL_HEAD_IMG
finallong
60
中头像尺寸
SMALL_HEAD_IMG
finallong
50
小头像尺寸
2.方法分析
方法名
输入
输出
说明
备注
getDomain
pid
String
获取club_domain
getPicDir
String
获取头像上传路径
genPicUrl
Id
Ext
size
String
获取头像保存路径
根目录不同
genPicPath
Id
Ext
size
List
获取头像保存路径
根目录不同
getHeadPath
Hid
size
String
根据头像尺寸返回头像地址
getFileExt
fileName
String
返回文件后缀
getPicId
filename
String
获取图片id
removeSame
arry
String[]
删除重复
不清楚
getPicUrlInfo
picId
String
根据id解析保存路径,并将其返回
creatEmptyFile
fileFulName
boolean
创建目录结构
GetNewWidth
Width
Height
orderW
orderH
Int[]
根据传入的宽高信息,计算出新的图片尺寸和类型
unzip
zipFileName
outputDirectory
List
解压文件到指定目录
imgMagic
Image
maxWidth
maxHeight
oldPicPath
newPicPath
boolean
转存图片
DelExfi
Image
oldPicPath
boolean
删除制定文件
getHead3Size
newHead
newBig
newMiddle
newSmall
width
height
rate
left
top
boolean
根据参数生成三种头像图片
getUeditorPicDir
String
获取editor的地址
getueditorDomain
pid
String
获取ueditor_domain
配置文件中获取
getAttachmentDir
String
获取attachment_Dir
配置文件中获取
getDocDir
String
获取doc_Dir
配置文件中获取
getSwfDir
String
获取swf_Dir
配置文件中获取
3.7.1UploadUtil类
1.方法分析
方法名
输入
输出
说明
备注
getSourceURL
返回文件的下载URL
getSWFURL
返回swf格式的URL
getMd5
返回文件的md5结果
4模块Yanxiu_upload数据库说明
目前,本模块只存储上传文档的相关信息。
Yanxiu_online数据库表汇总
数据库名
表名
说明
User
filename
记录每个文件的相关信息
4.1表filename
表名
字段名
类型
说明
filename
id
Int
自增主键
oldname
String
文件名
md5name
String
Md5处理后的文件名
pagenum
int
转化为swf之后的页数
A.附录
1部分功能流程图
1.1文档上传流程图
1.2文档转换流程图