# 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)