Giter VIP home page Giter VIP logo

songquanpeng / go-file Goto Github PK

View Code? Open in Web Editor NEW
906.0 10.0 95.0 603 KB

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

Home Page: https://go-file.onrender.com

License: MIT License

Go 37.73% HTML 46.95% CSS 3.41% JavaScript 11.15% Python 0.31% Shell 0.08% Dockerfile 0.37%
lan-share file-share go-file golang

go-file's Introduction

go-file

Go File

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

license release release docker pull GoReportCard

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

Note:推荐使用官方的 Go File 启动器,免去命令行操作。

特点

  1. 无需配置环境,仅单个可执行文件,直接双击即可开始使用
  2. 自动打开浏览器,分享文件快人一步。
  3. 提供二维码,可供移动端扫描下载文件,告别手动输入链接。
  4. 支持分享本地文件夹
  5. 适配移动端。
  6. 内置图床,支持直接粘贴上传图片,提供图片上传 API。
  7. 内置视频播放页面,可用于在其他设备上在线博客自己电脑上的视频,轻松跨设备在线看视频。
  8. 支持拖拽上传,拷贝上传
  9. 允许对不同类型的用户设置文件访问权限限制。
  10. 访问频率限制。
  11. 支持 Token API 验证,便于与其他系统整合。
  12. 为不熟悉命令行的用户制作了启动器详见此处
  13. 支持 PicGo,插件搜索 gofile 即可安装,详见此处
  14. 配套 CLI 工具,支持命令行上传文件,支持 P2P 模式文件分享,详见此处
  15. 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
  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 版本在此

go-file's People

Contributors

dependabot[bot] avatar songquanpeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-file's Issues

支持修改点击标题后的默认行为

场景:当上传了「无意义」大量图片或文件时,无法确定需要下载的是哪一个。
建议:将点击名字的默认动作,从「下载」改为『预览』

不支持arm吗?

root@cubieboard:~/share# ./go-file
2022/07/13 13:08:58 Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

启用cgo编译报错,

[root@VM-4-3-centos go-file]# CGO_ENABLED=1 GOOS=linux GOARCH=arm go build -o arm32_cgo

runtime/cgo

gcc: error: unrecognized command line option '-marm'
[root@VM-4-3-centos go-file]# CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -o arm64_cgo

runtime/cgo

gcc_arm64.S: Assembler messages:
gcc_arm64.S:28: Error: no such instruction: stp x29,x30,[sp,' gcc_arm64.S:32: Error: too many memory references for mov'
gcc_arm64.S:34: Error: no such instruction: stp x19,x20,[sp,' gcc_arm64.S:37: Error: no such instruction: stp x21,x22,[sp,'
gcc_arm64.S:40: Error: no such instruction: stp x23,x24,[sp,' gcc_arm64.S:43: Error: no such instruction: stp x25,x26,[sp,'
gcc_arm64.S:46: Error: no such instruction: stp x27,x28,[sp,' gcc_arm64.S:50: Error: too many memory references for mov'
gcc_arm64.S:51: Error: too many memory references for mov' gcc_arm64.S:52: Error: too many memory references for mov'
gcc_arm64.S:54: Error: no such instruction: blr x20' gcc_arm64.S:55: Error: no such instruction: blr x19'
gcc_arm64.S:57: Error: no such instruction: ldp x27,x28,[sp,' gcc_arm64.S:60: Error: no such instruction: ldp x25,x26,[sp,'
gcc_arm64.S:63: Error: no such instruction: ldp x23,x24,[sp,' gcc_arm64.S:66: Error: no such instruction: ldp x21,x22,[sp,'
gcc_arm64.S:69: Error: no such instruction: ldp x19,x20,[sp,' gcc_arm64.S:72: Error: no such instruction: ldp x29,x30,[sp],'
[root@VM-4-3-centos go-file]#

linux无法启用访问数据统计

系统是centos7.9,宝塔面板安装并启用redis,但设置访问数据统计时,提示:未启用 Redis,无法启用统计功能
请问要设置什么吗?
能否像设置MySQL一样设置环境变量或者通过端口访问redis

支持批量删除功能

1.搜索无法搜“+X”(X指代任意字符);
2.首页是否考虑加批量删除的功能;
3.首页是否考虑加一个新增文件夹的功能;

上传大量的大文件导致卡顿

目前最大问题是上传大量的大文件,会导致卡顿,页面打不开,必须重启。
别在传文件时,另一些人可能页面都打不开
并且有时速度也会很慢。

作者大大您好,请教一下如何加Path参数?

作者大大您好,我在网上无意间发现您制作的这个软件,感觉非常好用,但是在共享文件夹时遇到了问题。
“如果需要分享文件夹,加 path 参数:./go-file.exe -path ./this/is/a/path”
请问这个加path参数是在哪添加的,在百度上我没有搜索到相关答案,所以在这里提交疑问,希望能得到您的答复,感谢🤝

为首页上传的文件创建次级目录

1.现在首页上传的文件,直接update或者分享的文件夹根目录下,导致根目录很混乱。
能不能给放到一个次级目录,如update/default。
2.添加个复制链接按钮吧,方便分享给别人,现在都是点开下载复制的
ps:试了下系统管理的修改底部信息,发现就是插入一段HTML代码,那是不是可以把首页弄成可以自定义的HTML或markdown页面呢。
我现在是把 那个gotext 用ifream弄到底部了🤣

支持 PicGo

1.希望能支持picgo
2.我传了2个文件,1个图床文件;首页只能看到文件,看不到图床图片,去图床栏目下也无法看到图片

图床可以参考https://github.com/icret/EasyImages2.0 ,感觉他的图床页面做得不错,我目前用这个,但是漏洞贼多导致我不敢开放外网.

部分使用问题优化

  1. 无权限上传/管理文件的用户,应当隐藏相关操作按钮,这样更直观
  2. 建议使用github-actions自动打包多平台二进制包

搜索不到

版本v0.4.2
只有页签在首页时上传的才能搜到,在其他(比如文件)时,搜索不到

关于配置保存方式的疑问 & SSL?

关于配置保存方式的疑问

请问这个程序通过什么来保存配置内容呢?鉴于不需要配置环境,是自动生成SQLite数据库还是保存成配置文件了?
(我真的不怎么会看源码😂)

SSL?

作者有没有打算支持SSL?我知道我可以套Nginx,但是如果支持了好像更省事诶。

I got a error!

wsl run go-file 报错!
/mnt/d/private/go-file/go-file.exe -port 80 -token private -path /mnt/d/Share
2021/12/09 11:15:47 [Recovery] 2021/12/09 - 11:15:47 panic recovered: runtime error: invalid memory address or nil pointer dereference C:/Program Files/Go/src/runtime/panic.go:212 (0xa3f104) C:/Program Files/Go/src/runtime/signal_windows.go:239 (0xa3efbe) C:/Users/song/Documents/Projects/Go/go-file/controller.go:44 (0xf36dbb) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xea36e1) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:99 (0xea36c7) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xea27c6) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/logger.go:241 (0xea2785) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xe98e6f) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:489 (0xe98e55) C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:445 (0xe98944) C:/Program Files/Go/src/net/http/server.go:2887 (0xcb4f89) C:/Program Files/Go/src/net/http/server.go:1952 (0xcb030c) C:/Program Files/Go/src/runtime/asm_amd64.s:1371 (0xa5ef20)
不能访问自定义的共享文件夹

Explorer 处理部分文件时发生错误

例如:C++ Primer 第5版.pdf

[GIN] 2022/05/17 - 21:46:01 | 500 |      4.4349ms |  172.21.224.224 | GET      "/explorer?path=C%2B%2B+Primer+%E7%AC%AC5%E7%89%88.pdf"


2022/05/17 21:46:14 [Recovery] 2022/05/17 - 21:46:14 panic recovered:
runtime error: invalid memory address or nil pointer dereference
C:/Program Files/Go/src/runtime/panic.go:212 (0xa8f104)
C:/Program Files/Go/src/runtime/signal_windows.go:239 (0xa8efbe)
C:/Users/song/Documents/Projects/Go/go-file/controller.go:44 (0xf86dbb)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xef36e1)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:99 (0xef36c7)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xef27c6)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/logger.go:241 (0xef2785)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165 (0xee8e6f)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:489 (0xee8e55)
C:/Users/song/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:445 (0xee8944)
C:/Program Files/Go/src/net/http/server.go:2887 (0xd04f89)
C:/Program Files/Go/src/net/http/server.go:1952 (0xd0030c)
C:/Program Files/Go/src/runtime/asm_amd64.s:1371 (0xaaef20)

建议文本访问增加UI,可以适配移动端快速复制文本内容

场景:电脑访问首页,自动创建了文本,手机扫描二维码方位该文本。
现象:手机直接打开了该文件,由于没有UI,所以未适配手机屏幕大小。只能双指拖拽,并放大寻找文本。比较不方便
建议:增加访问文本的UI支持,添加【复制】按钮,直接复制文本。可以达到“局域网”共享粘贴板一样的能力。

局域网网页排版错乱

由于前端页面header.html中css和js定义为在线链接,导致局域网中运行单文件页面排版错乱(无法加载css/js资源),建议将资源全部离线存放到static目录

管理员忘记密码或账号封进无法登录

docker环境部署的,登录系统以后改密码,退出登录使用新密码登录,第一次登录可能输错了导致账号被封禁,后续就没办法再登录系统了,有什么办法嘛

改进 P2P 文件传输功能

首先使用 TCP 打洞。
打洞失败后,才使用 UDP 协议。

实现流量控制,确认机制和超时重传。

优化视频播放页面

大神,看了你这个系统,非常好,我一直在找一个可以用于互联网的简单的视频,pdf文件分享工具,建议系统增加一下功能:
1、前端和管理端分开设计
2、支持视频介绍,浏览视频前有一个对视频的介绍
3、支持PDF等文件浏览
谢谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.