# little-file **Repository Path**: happysoft/little-file ## Basic Information - **Project Name**: little-file - **Description**: 小型文件管理http服务,为原有的文件系统提供可靠的http服务目前支持:fatdfs,ftp,sftp,local(本地文件)图片在线预览,支持gzip压缩简单封装了,fastdfs,sftp,ftp,minio基本操作(上传,下载,断点下载) - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2021-05-08 - **Last Updated**: 2021-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # little-file ## 项目介绍 小型文件管理http服务,为原有的文件系统提供可靠的http服务目前支持:fatdfs,ftp,sftp,minio,local(本地文件)图片在线预览,支持gzip压缩简单封装了,fastdfs,sftp,ftp基本操作(上传,下载) 简单安全控制 hmac 可在线预览pdf,图片等文件,后续可支持文件缩放,剪裁等功能 1. littlefile-core 基本实现 fdfs,sftp,ftp,minio,aliyunoss 基础功能 (上传,下载,删除,断点下载,实时图片预览) 2. xxx-sample littlefile-core 的文件服务访问(下载,访问,对接已有文件系统)功能例子 3. littlefile-combine 统一文件服务接口,重新划分文件协议,结合mysql实现文件存储 4. 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] 5. 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 ``` ### 传统项目使用:在web.xml中配置默认的servlet ``` downLoadServlet com.taoyuanx.littlefile.web.DownLoadServlet liitle_conf classpath:littlefile.properties downLoadServlet /down ``` ## 其他环境 ``` 实例化 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://等,后端拉取文件时,根据不同文件系统拉取
## fastdfs完全解读 [fastdfs使用指南](fastdfs/fastdfs.md) [fastdfs协议详解](fastdfs/fastdfs-protocol.md) ## todo - http 文件服务:集合多种存储服务,包含简单功能:上传,下载,删除(已完成) - fastdfs 专用http服务:封装fastdfs client 为http 方便非java语言使用(已完成) ## 仓库地址 **git地址:**[https://github.com/dushitaoyuan/little-file](https://github.com/dushitaoyuan/little-file) **码云地址:**[https://gitee.com/taoyuanx/little-file](https://gitee.com/taoyuanx/little-file)