V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JusticeIsHere
V2EX  ›  分享创造

Go File: 基于 Go 的文件分享工具

  •  
  •   JusticeIsHere · 2022-07-11 08:23:06 +08:00 · 4252 次点击
    这是一个创建于 627 天前的主题,其中的信息可能已经有所发展或是发生改变。

    概述

    stars license release release GoReportCard

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

    项目地址: https://github.com/songquanpeng/go-file

    在线演示: https://go-file.herokuapp.com/ (默认用户名 admin,密码 123456)

    特点

    1. 无需配置环境,仅单个可执行文件,直接双击即可开始使用。
    2. 自动打开浏览器,分享文件快人一步。
    3. 提供二维码,可供移动端扫描下载文件,告别手动输入链接。
    4. 支持分享本地文件夹。
    5. 适配移动端。
    6. 内置图床,支持直接粘贴上传图片,提供图片上传 API 。
    7. 内置视频播放页面,可用于在其他设备上在线博客自己电脑上的视频,轻松跨设备在线看视频。
    8. 支持拖拽上传,拷贝上传。
    9. 允许对不同类型的用户设置文件访问权限限制。
    10. 访问频率限制。

    使用方法

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

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

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

    进阶使用:

    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

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

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

    注意:

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

    演示

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

    index page file page image page video page setting page setting page 2

    其他

    项目地址: https://github.com/songquanpeng/go-file

    在线演示: https://go-file.herokuapp.com/ (默认用户名 admin,密码 123456)

    32 条回复    2022-12-12 11:46:15 +08:00
    gesse
        1
    gesse  
       2022-07-11 08:36:00 +08:00   ❤️ 1
    非常牛! 感觉可使用的场景很多。
    linglin0924
        2
    linglin0924  
       2022-07-11 09:42:57 +08:00   ❤️ 1
    👍,已经收藏了。前端用什么写的。
    JusticeIsHere
        3
    JusticeIsHere  
    OP
       2022-07-11 09:49:24 +08:00 via Android
    @linglin0924 CSS 库用的是 Bulma ,自己改了下部分样式,其他纯原生 JavaScript
    7654
        4
    7654  
       2022-07-11 10:11:06 +08:00   ❤️ 1
    1 、从 /explorer?path=文件选项下载文件名称都为 explorer ,不是真是文件名
    2 、图床没有文件列表,管理不方便
    3 、readme 里的初始密码 password ,实际 123456 ,文档未更新
    keepeye
        5
    keepeye  
       2022-07-11 10:23:31 +08:00   ❤️ 1
    看样子只能在服务器上跑
    keepeye
        6
    keepeye  
       2022-07-11 10:24:30 +08:00   ❤️ 1
    本地跑想要分享需要弄个 frp 之类的,还是需要一台服务器
    JusticeIsHere
        7
    JusticeIsHere  
    OP
       2022-07-11 10:35:36 +08:00 via Android
    @7654 第一个是 bug ,感谢反馈,之前不是这样的,今晚修复;
    第二个之后管理页面会加;第三个已经改了。非常感谢!
    JusticeIsHere
        8
    JusticeIsHere  
    OP
       2022-07-11 10:37:34 +08:00 via Android
    @keepeye 局域网下分享也是 Okay 的,实测分享 100GB 以上的文件也没问题
    JusticeIsHere
        9
    JusticeIsHere  
    OP
       2022-07-11 10:39:52 +08:00 via Android
    @7654 我刚刚试了下第一个没能复现,请问你用的浏览器以及版本?
    xichuhanguguan
        10
    xichuhanguguan  
       2022-07-11 11:24:50 +08:00   ❤️ 1
    演示地址打开无需登录可上传文件,删除提示需要登录。登录提示用户名或密码错误,或者该用户已被封禁。
    kuaner
        11
    kuaner  
       2022-07-11 11:25:59 +08:00   ❤️ 1
    很棒,希望有个 docker 版本,放在 nas 上用
    JusticeIsHere
        12
    JusticeIsHere  
    OP
       2022-07-11 11:29:33 +08:00 via Android
    @xichuhanguguan 密码和权限可能被人改了
    JusticeIsHere
        13
    JusticeIsHere  
    OP
       2022-07-11 11:30:17 +08:00 via Android
    @kuaner 好建议,之后可以折腾一下
    pcmid
        14
    pcmid  
       2022-07-11 12:35:15 +08:00 via iPhone   ❤️ 1
    太棒了,请问有支持 s3 做后端存储的打算么
    JusticeIsHere
        15
    JusticeIsHere  
    OP
       2022-07-11 13:16:58 +08:00 via Android
    @7654 我知道了,你点的是文件名,而不是后面的下载按钮,直接点文件名原意是在浏览器中直接打开,如果浏览器不支持这个文件格式,就会下载,此时文件名确实是错的。
    JusticeIsHere
        16
    JusticeIsHere  
    OP
       2022-07-11 13:17:35 +08:00 via Android
    @pcmid 有的,之后还打算做成网盘,支持 WebDAV
    leafof
        17
    leafof  
       2022-07-11 13:36:22 +08:00   ❤️ 1
    类似的工具有很多个了吧,似乎 Plain text 工具还没有看到过
    mekingname
        18
    mekingname  
       2022-07-11 13:39:29 +08:00   ❤️ 1
    不要用 gotemplate 。

    用 gin-vue-admin 重构吧。
    JusticeIsHere
        19
    JusticeIsHere  
    OP
       2022-07-11 14:03:40 +08:00 via Android
    @leafof 确实,但是这个还是有一些差异化的功能的,我不打算只是做一个文件列表
    JusticeIsHere
        20
    JusticeIsHere  
    OP
       2022-07-11 14:05:44 +08:00 via Android
    @mekingname gotemplate 写起来真难搞,我想加个全局变量都难
    7654
        21
    7654  
       2022-07-11 14:57:09 +08:00
    @JusticeIsHere 确实是这样
    有个疑问,为什么要分首页 upload 及 explorer 两种类型呢
    upload 可以有直链+描述,explorer 功能简陋还要特别指定路径
    JusticeIsHere
        22
    JusticeIsHere  
    OP
       2022-07-11 15:02:13 +08:00 via Android
    @7654 explorer 用于分享已有的文件夹,是不需要上传的,首页那个必须一个一个上传。实际上 explorer 视图可以在启动时指定其他路径,未指定的情况下和首页那个共享路径
    7654
        23
    7654  
       2022-07-11 15:06:39 +08:00
    @JusticeIsHere 那可以在 explorer 里增加备注功能,用于首页显示,这样是不是就不用一个个上传了
    pcmid
        24
    pcmid  
       2022-07-11 21:55:30 +08:00
    @JusticeIsHere 期待一下, 等支持我来试试
    blankmiss
        25
    blankmiss  
       2022-07-12 13:10:42 +08:00
    支持多线程下载吗
    JusticeIsHere
        26
    JusticeIsHere  
    OP
       2022-07-12 16:20:26 +08:00 via Android
    @blankmiss go 的 http 实现是支持范围下载的,所以断点续传和多线程下载都应该没啥问题才对
    mlhadoop
        27
    mlhadoop  
       2022-11-22 20:37:34 +08:00
    支持 s3 协议不
    JusticeIsHere
        28
    JusticeIsHere  
    OP
       2022-11-26 20:03:28 +08:00   ❤️ 1
    @mlhadoop 暂时不支持,目前正打算全部重构,之后会考虑的
    mlhadoop
        29
    mlhadoop  
       2022-11-26 20:05:24 +08:00
    @JusticeIsHere 谢谢; 发布的时候还请 @下我;
    JusticeIsHere
        30
    JusticeIsHere  
    OP
       2022-11-26 20:15:19 +08:00
    @mlhadoop 好的👌
    vonsy
        31
    vonsy  
       2022-12-02 17:21:55 +08:00
    @JusticeIsHere
    上传了一个 50G 的 tar.gz 文件,50G 已经上传完成了,浏览器显示处理中,一会就停止了,没有文件上传记录,服务器 upload 下创建了 17G 文件.
    最后是 curl –u name:passwd -T file.tar.gz ftp://ip:port/ 上传到 ftp
    JusticeIsHere
        32
    JusticeIsHere  
    OP
       2022-12-12 11:46:15 +08:00
    @vonsy 感谢反馈,我调查一下。另外还是推荐用 GitHub Issue 来反馈问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5308 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:10 · PVG 17:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.