此项目是一个在线文件目录的程序, 支持各种对象存储和本地存储, 使用定位是个人放常用工具下载, 或做公共的文件库. 不会向多账户方向开发.
前端基于 h5ai 的原有功能使用 Vue 重新开发了一遍. 后端采用 SpringBoot, 数据库采用内嵌数据库.
DEMO预览地址: https://zfile.jun6.net
系统特色
- 内存缓存 (免安装)
- 内存数据库 (免安装)
- 个性化配置
- 自定义目录的 readme 说明文件
- 自定义 JS, CSS
- 文件夹密码
- 支持在线浏览文本文件, 视频, 图片, 音乐. (支持 FLV 和 HLS)
- 文件/目录二维码
- 缓存动态开启,
缓存自动刷新 (v2.2 及以前版本支持) 全局搜索 (v2.2 及以前版本支持) 后继更新- 同时挂载多个存储策略
- 支持 阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家庭/个人版, OneDrive 世纪互联版, 七牛云 KODO, 腾讯云 COS, 又拍云 USS.
安装教程:
Zfile支持Linux和windows两种版本,请根据自己系统来选择下列安装方法:
Linux
此处的命令中都默认安装到用户目录下: ~
。
对于 root
用户, 在 /root/
路径下, 对于其他用户, 在 /home/用户名/
路径下。
如需更改安装路径, 请自行修改。
安装依赖
如为更新程序, 则可跳过此步骤, 但要执行命令, 停止服务并清理上个版本的程序: ~/zfile/bin/stop.sh && rm -rf ~/zfile
(不会删除数据文件)
# CentOS系统
yum install -y java-1.8.0-openjdk unzip
# Debian/Ubuntu系统
apt update
apt install -y openjdk-8-jre-headless unzip
下载项目
wget -P ~ https://c.jun6.net/ZFILE/zfile-release.war
cd ~
mkdir zfile && unzip zfile-release.war -d zfile && rm -rf zfile-release.war
chmod +x ~/zfile/bin/*.sh
常用命令
~/zfile/bin/start.sh # 启动项目
~/zfile/bin/stop.sh # 停止项目
~/zfile/bin/restart.sh # 重启项目
Windows
安装依赖
安装 JDK8, 并配置环境变量, 可参考: https://jingyan.baidu.com/article/ce09321b85e8d62bff858f93.html
下载项目
下载文件 https://c.jun6.net/ZFILE/zfile-release.jar
启动项目
然后在文件所在路径下, 使用 cmd
执行命令 (不支持 powershell
):
java -Dfile.encoding=utf-8 -jar -Dserver.port=8080 .\zfile-release.jar
如需要修改配置文件, 可去 Github 复制一份配置文件, 放到
jar
文件同路径即可.
功能介绍:
密码文件夹
在需要密码访问的文件夹,添加 password.txt
,文件内容为文件夹密码,如为中文密码,请保证文件为 UTF8
编码。
此文件不会显示,但无法防止被下载,可指定密码文件名,在配置文件 application。yml
中 zfile -> conconstant -> password
修改。
文档区
在需要添加文档的文件夹,添加 readme。txt
,文件内容为文件夹密码,如包含中文,请保证文件为 UTF8
编码。
此文件不会显示,可指定文档文件名,在配置文件 application。yml
中 zfile -> conconstant -> readme
修改。
自定义 CSS JS
在对应的框内,写 CSS、JS 代码即可,无需写 <style>
或 script
标签。
缓存功能
开启缓存后,会缓存文件夹中的内容,可以加快访问速度,但同样也可能会导致数据不一致。缓存每 30 分钟刷新一次。
搜索功能
可全局搜索整个存储引擎中的内容。
搜索功能,需开启缓存后,才可生效。
搜索包含加密文件
如关闭此选项,如文件夹中需要密码访问,则此文件夹及其子文件夹中的内容,不会出现在搜索结果中。
忽略大小写
搜索忽略大小写。
OneDrive 令牌
OneDrive 令牌,会在以下情况下自动刷新:
- 项目启动 30 秒后,每 15 分钟自动刷新一次 (令牌有效期为 1 小时)。
- 保存存储策略时
- 切换到 OneDrive 策略时
常见问题:
如何更改端口
vim ~/zfile/WEB-INF/classes/application.yml
server:
port: 8080 # 修改此处.
默认启动端口为 8080, 如需请配置文件请编辑上述文件, 修改后重启程序生效.
为什么启动后无法访问
可能是防火墙没开启. 下面介绍如何防火墙开启端口. 对于阿里云、腾讯云、谷歌云等厂商, 可能还需要额外去后台开启防火墙.
CentOS 7.x
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放 8080 端口
firewall-cmd --reload # 重启firewall
Ubuntu 16.x / Debian 9.x
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables-save
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
宝塔面板
宝塔面板可以去后台开放端口:
如何使用域名进行访问
方式1: 将域名 A
记录解析到服务器 IP, 即可通过 域名:端口
访问 (80 端口即可免输入端口).
方式2: 使用 nginx
或 caddy
等工具反向代理. 以下以宝塔面板为例:
首先点击 网站
-> 新增站点
:
点击反向代理:
设置反向代理:
为什么提示密码错误
- 请检查密码文件中是否包含中文,如果包含,请保持文件编码为 UTF8。
- 请检查密码文件中是否包含空格, 换行符等不可见字符.
前后端分离如何部署
下载 https://github.com/zhaojun1998/zfile/tree/master/src/main/resources/static
路径下的所有文件, 或在程序运行后的相对路径:WEB-INF/classes/static
.
修改 zfile.config.json
内文件指向后端地址, 然后放到静态资源服务器, 或对象存储即可:
{
"baseUrl": "http://xx.xxx.cn:8080"
}