/go-file

基于 Go 的文件分享工具,仅单可执行文件,开箱即用,内置图床和视频播放页面. File sharing tool based on Go.

Primary LanguageHTMLMIT LicenseMIT

go-file

Go File

✨ 文件分享工具,仅单个可执行文件,开箱即用,可用于局域网内分享文件和文件夹,直接跑满本地带宽 ✨

license release release docker pull GoReportCard

开发规划 · 程序下载 · 启动器下载 · CLI 下载 · 使用教程 · 截图展示

English

Warning: The English version is outdated.

Description

File sharing tool, can be used to share files in a LAN.

Features

  1. No need to configure environment and there is only a single executable file.
  2. Automatically open browser to make you share file more quickly.
  3. Generate QR codes for your mobile phone to scan.
  4. Easily share all the content of a local dir.

Usage

For v0.3.4 and below.

Just double-click to use with default port 3000 and default token (used to verify identity when user try to delete files) token.

If you want to change the port and token, run it like this:./go-file.exe --port 80 --token private.

Your can also public a local path by providing a path like this : ./go-file.exe --path ./this/is/a/path

Usage of go-file.exe:
  -host string
        the server's ip address or domain (default "localhost")
  -path string
        specify a local path to public
  -port int
        specify the server listening port. (default 3000)
  -token string
        specify the private token. (default "token")
  -video string
        specify a video folder to public

Demo

Please visit https://go-file.herokuapp.com/ to have a try yourself.

index page explorer page image page video page

Others

Node.js version is here.

特点

  1. 无需配置环境,仅单个可执行文件,直接双击即可开始使用。
  2. 自动打开浏览器,分享文件快人一步。
  3. 提供二维码,可供移动端扫描下载文件,告别手动输入链接。
  4. 支持分享本地文件夹。
  5. 适配移动端。
  6. 内置图床,支持直接粘贴上传图片,提供图片上传 API。
  7. 内置视频播放页面,可用于在其他设备上在线博客自己电脑上的视频,轻松跨设备在线看视频。
  8. 支持拖拽上传,拷贝上传。
  9. 允许对不同类型的用户设置文件访问权限限制。
  10. 访问频率限制。
  11. 支持 Token API 验证,便于与其他系统整合。
  12. 为不熟悉命令行的用户制作了启动器,详见此处
  13. 配套 CLI 工具,支持命令行上传文件,支持 P2P 模式文件分享,详见此处
  14. Docker 一键部署:docker run -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/go-file:/data justsong/go-file

使用方法

v0.3.3 以及之前版本的使用方法请点击此处

直接双击即可使用,默认端口为 3000,程序在第一次启动时会自动创建管理员账户,用户名为 admin,密码为 123456,记得登录后到 管理页面 下的 账户管理 标签页中更改你的用户密码。

之后程序将自动为你打开浏览器,点击右上角的 上传 按钮即可上传,支持拖放上传,支持同时上传多个文件。

进阶使用:

  1. 如果要修改端口,启动时请指定 port 参数:./go-file.exe --port 80
  2. 如果需要分享文件夹,启动时请指定 path 参数:./go-file.exe --path ./this/is/a/path,之后点击导航栏上的 文件 即可。
  3. 如果需要分享本地的视频资源,加 video 参数:./go-file.exe --video ./this/is/a/path,之后点击导航栏上的 视频 即可。
  4. 如果需要启用访问速率控制,需要在启动前设置 Redis 连接字符串环境变量 REDIS_CONN_STRING,例如:redis://default:redispw@localhost:49153
  5. 如果想使用 MySQL,需要先登录 MySQL 创建一个空的数据库 gofile,然后设置 SQL_DSN 环境变量即可,例如:root:123456@tcp(localhost:3306)/gofile
  6. 修改默认的 SQLite 数据库文件的位置,请设置 SQLITE_PATH 环境变量,默认在工作目录下,名称为 .go-file.db(类 Unix 系统下是隐藏文件)。
  7. 设置会话密钥(默认随机生成),请设置 SESSION_SECRET 环境变量。
  8. 设置文件上传路径(默认为工作目录下面的 upload 目录),请设置 UPLOAD_PATH 环境变量。
  9. 禁止自动打开浏览器,启动时请指定 no-browser 参数:./go-file.exe --no-browser true
  10. 如果想要使用 Token 访问 API,请先前往个人账户管理页面生成 Token,之后在请求时加上 Authorization HTTP 头部,值为 YOUR_TOKEN 或者 Bearer YOUR_TOKEN

如果你不知道怎么加参数:

  1. 打开 go-file 所在的文件夹,
  2. 按住 shift 并右键空白区域,
  3. 选择在此处打开 PowerShell(如果是 Windows 11 的话则需要先点击显示更多选项),
  4. 在打开的终端中输入:./go-file --port 80 --video ./path/to/video

建议直接使用启动器

使用 Docker 进行部署: 执行:docker run -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/go-file:/data justsong/go-file

数据将会保存在宿主机的 /home/ubuntu/data/go-file 目录。

注意:

  1. 如果主机有多个 ip 地址,请使用 host 参数指定一个其他设备可访问的 ip 地址,如:go-file.exe --host xxx.xxx.xxx.xxx,否则二维码将生成错误。
  2. 默认配置下访客可以上传和下载文件,可在 管理 -> 系统设置 中修改权限配置。
  3. 如果是公网部署,务必记得第一时间更改默认密码!

演示

在线试用(用户名为 admin,密码为 123456):https://go-file.onrender.com

注意,以下展示图片可能没有得到及时跟新。 index page file page image page video page setting page setting page 2

启动器截图:

launcher

其他

Node.js 版本在此