小型文件管理http服务,为原有的文件系统提供可靠的http服务目前支持:fatdfs,ftp,sftp,minio,local(本地文件)图片在线预览,支持gzip压缩简单封装了,fastdfs,sftp,ftp基本操作(上传,下载) 简单安全控制 hmac 可在线预览pdf,图片等文件,后续可支持文件缩放,剪裁等功能
- littlefile-core
基本实现 fdfs,sftp,ftp,minio,aliyunoss 基础功能 (上传,下载,删除,断点下载,实时图片预览) - xxx-sample
littlefile-core 的文件服务访问(下载,访问,对接已有文件系统)功能例子 - littlefile-combine
统一文件服务接口,重新划分文件协议,结合mysql实现文件存储 - littlefile-fdfs-http
- fastdfs http 服务
- littlefile-fdfs-http-server 服务端
- littlefile-fdfs-http-client client端
- 基于 fastdfs 5.11 (也可升级最新6.x版,基本无需改动)
理论上 依托fastdfs 封装http,可支持任何客户端
(fastdfs-http文档)[littlefile-fdfs-http/littlefile-fdfs-http.md]
- fastdfs
fastdfs (最全文档解析) [fastdfs/fastdfs.md] fastdfs (协议解析) [fastdfs/fastdfs-protocol.md]
客户端文件请求(携带参数:文件服务器路径,token,访问类型(查看或者下载))->->web服务,拉取远端文件到Web服务器所在本地磁盘->返回文件流信息(可选gzip压缩)
#文件服务器类型 FTP,FDFS,SFTP,LOCAL(本地模式);
littlefile.server_type=FDFS
#文件缓存时间:s秒,min分钟,h小时,d天 0 不清理 ,可选
littlefile.file_cache_time=30min
#文件清理线程数,可选
littlefile.file_clean_thread_num=3
#是否对文件进行gzip压缩
littlefile.file.gzip=false
#webapp:xx abs:xx webapp表示为web环境下目录 abs表示绝对路径
#如webapp:file或 abs:l:/tmp
littlefile.file_cache_dir=webapp:file
#安全控制,可选配置 支持 md4,sha1,sha256,公开访问时,不需要配置
littlefile.token.hmac=md5
#hmac 秘钥
littlefile.token.password=md5
#文件访问token过期时间
littlefile.token.expireMin=30
#文件处理接口url 必填
littlefile.fileHandle.url_format=http://localhost:8080/littlefile-web/down
#fdfs配置地址 classpath:xxx或者绝对路径
littlefile.fdfs.fdfs_conf=classpath:fdfs.properties
#sftp配置
littlefile.sftp.host=192.168.91.201
littlefile.sftp.port=22
littlefile.sftp.username=root
littlefile.sftp.password=123
#工作目录
littlefile.sftp.workdir=/opt/sftp/
#非账户连接配置,可选
# classpath:xxx或者绝对路径
littlefile.sftp.private_key=
littlefile.sftp.private_key_password=
#ftp配置
littlefile.ftp.host=127.0.0.1
littlefile.ftp.port=21
littlefile.ftp.username=ftp
littlefile.ftp.password=ftp
#工作目录
littlefile.ftp.workdir=/
#ftp ssl配置,可选
# classpath:xxx或者绝对路径
littlefile.ftp.key_manager_path=
littlefile.ftp.key_manager_password=
# classpath:xxx或者绝对路径
littlefile.ftp.trust_manager_path=
littlefile.ftp.trust_manager_password=
#阿里云oss配置
littlefile.alioss.bucketName=
littlefile.alioss.AccessKeyID=
littlefile.alioss.AccessKeySecret=
littlefile.alioss.endpoint=
#minio配置
littlefile.minio.bucketName=
littlefile.minio.accessKey=
littlefile.minio.secretKey=
littlefile.minio.endpoint=
littlefile.minio.region=
littlefile.minio.connectTimeout=
littlefile.minio.maxIdleConnections=
littlefile.minio.keepAliveDuration=
#本地模式 英文,分割,支持多个本地文件目录
littlefile.local.dirs=L:/tmp2,L:/tmp3
<!-- 配置servlet,处理文件请求 需要参数:
安全控制开启时:
s token token中包含 文件url和处理类型
文件访问链接生成参见 @see com.taoyuanx.littlefile.web.FileHandler.signFileUrl
具体实现 参见com.taoyuanx.littlefile.web.FileHandler
如: 下载链接:http://localhost:8080/littlefile-web/down?s=$token
查看链接:http://localhost:8080/littlefile-web/down?s=$token
未开启时:
t 文件类型 0下载 1查看 2 断点下载
f 文件路径
如: 下载链接:http://localhost:8080/littlefile-web/down?t=0&f=path
查看链接:http://localhost:8080/littlefile-web/down?t=1&f=path
-->
<servlet>
<servlet-name>downLoadServlet</servlet-name>
<servlet-class>com.taoyuanx.littlefile.web.DownLoadServlet</servlet-class>
<init-param>
<param-name>liitle_conf</param-name>
<param-value>classpath:littlefile.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>downLoadServlet</servlet-name>
<url-pattern>/down</url-pattern>
</servlet-mapping>
</web-app>
实例化 com.taoyuanx.littlefile.web.FileHandler 类,或扩展该类暴露http服务
项目中实现了简单的安全控制,其他外部系统可引入littlefile-core包构造访问路径即可 安全控制实现参见:com.taoyuanx.littlefile.web.security.HmacTokenManager,用户亦可自行实现
部分参数解释如上,也可参见示例项目:littlefile-xxx-samples
1.上传文件
参见 LittleFile系列实现
2.创建授权url(com.taoyuanx.littlefile.web.FileHandler.signFileUrl),
未开启安全控制时,创建公开url(com.taoyuanx.littlefile.web.FileHandler.createPublicUrl)
参见 FileAuthedUrlCreate
3.访问
参见 com.taoyuanx.littlefile.sample.file.FileController
4.使用建议
如系统中存在多种文件系统,建议存储文件路径时,加以区分:
如: ftp://,oss://,fastdfs://等,后端拉取文件时,根据不同文件系统拉取
-
http 文件服务:集合多种存储服务,包含简单功能:上传,下载,删除(已完成)
-
fastdfs 专用http服务:封装fastdfs client 为http 方便非java语言使用(已完成)