DSF - 极简文件服务(Golang),简单的软件解决简单的需求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
nanmu42
V2EX    分享创造

DSF - 极简文件服务(Golang),简单的软件解决简单的需求

  •  1
     
  •   nanm42
    nanmu42 2021-03-30 12:40:40 +08:00 5438 次点击
    这是一个创建于 1660 天前的主题,其中的信息可能已经有所发展或是发生改变。

    DSF - 极简文件服务

    一个非常简单的 HTTP 文件服务,可以把本地的文件暴露到局域网上。

    仓库地址

    https://github.com/nanmu42/dsf

    动机

    虽然python3 -m http.server也能用,但是...

    • 有时我没法接受它单线程一次只能服务一个文件的特性;
    • dsf 提供复制粘贴友好的宿主机 IP 和端口号,这样我就不用自己去查询了。

    用法

    $ dsf -h dsf 的用法: -port int 监听端口 (默认 8080) -root string 文件根目录 (默认 "./") 

    分享当前工作目录:

    $ dsf listening on: http://127.0.0.1:8080 listening on: http://::1:8080 listening on: http://192.168.0.6:8080 listening on: http://fe80::1234:1e11:abec:5678:8080~~~~ 

    在特定端口分享特定目录:

    $ dsf -port 3000 -root ~/images listening on: http://127.0.0.1:3000 listening on: http://::1:3000 listening on: http://192.168.0.6:8080 listening on: http://fe80::1234:1e11:abec:5678:8080 

    安装

    适用于 Linux, Mac 和 Windows 预编译二进制可以在这里找到: https://github.com/nanmu42/dsf/releases/

    Gophers 可以这样安装:

    go install github.com/nanmu42/dsf@latest 

    使用愉快!

    License

    MIT

    第 1 条附言    2021-03-31 09:24:54 +08:00
    Edit1:

    这篇帖子现在成了大型轮子分享现场,评论的价值不低于正文。 : D
    37 条回复    2021-04-04 02:09:38 +08:00
    yeqizhang
        1
    yeqizhang  
       2021-03-30 12:56:43 +08:00 via Android   1
    能说说实际应用场景吗?分享文件?
    nanmu42
        2
    nanmu42  
    OP
       2021-03-30 13:06:11 +08:00
    @yeqizhang 对我来说,主要是:
    * 内网分享打包好的程序 /apk/前端项目;
    * 大文件内网传输,比企业 IM 快一些。
    oott123
        3
    oott123  
       2021-03-30 13:11:22 +08:00 via Android   1
    此时一位 darkhttpd 用户路过…
    nanmu42
        4
    nanmu42  
    OP
       2021-03-30 13:12:46 +08:00
    @oott123 哈哈哈,感谢路过。
    yeqizhang
        5
    yeqizhang  
       2021-0-30 13:28:12 +08:00 via Android
    @nanmu42 好的,谢谢,请问这个是直接在 exe 目录下直接跑命令就可,还是有个安装过程,自动配了环境变量?
    Tvulin
        6
    Tvulin  
       2021-03-30 13:34:36 +08:00   1
    README 里面指定端口似乎写错了...
    上面给定的 3000 端口,下面写的 8080
    nanmu42
        7
    nanmu42  
    OP
       2021-03-30 13:35:33 +08:00
    @yeqizhang Windows 的话,推荐下载后改名`dsf.exe`,放到你的 path 里,就可以在 cmd 里执行了。
    如果不是特别习惯使用命令行,也可以直接双击执行,就是参数没法调整,而且当前工作目录不好确定。
    nanmu42
        8
    nanmu42  
    OP
       2021-03-30 13:37:16 +08:00
    @Tvulin 噢,真的是,谢谢你提醒,我改下。 (偷懒复制粘贴被发现了
    不过 V2EX 没法编辑,这里就改不了了。
    yeqizhang
        9
    yeqizhang  
       2021-03-30 13:42:20 +08:00   1
    @nanmu42 ok,挺小巧的,mark 一下,以后可能路由器上可以搞一个,自己编译一下
    love
        10
    love  
       2021-03-30 13:46:23 +08:00   1
    我现在用的是 https://github.com/svenstaro/miniserve/ 这个可以上传文件这点不错的,有时我用手机需要上传文件到电脑用这个也方便
    missdeer
        11
    missdeer  
       2021-03-30 14:05:07 +08:00   1
    我也写过个类似的 https://github.com/missdeer/transfer/,支持了 http3 在某些环境下简直美滋滋
    chenset
        12
    chenset  
       2021-03-30 14:07:36 +08:00   1
    nginx 不是更简单吗
    nanmu42
        13
    nanmu42  
    OP
       2021-03-30 14:16:28 +08:00
    @chenset 见仁见智吧,我自己喜欢即用即走。
    XIU2
        14
    XIU2  
       2021-03-30 15:27:23 +08:00   1
    我的一些小项目中附带的 Pages 需要在 git push 前预览一下网页效果。
    因为是 Windows 系统,所以平时我都是用 Caddy,试了下你这个效果一样(连命令行参数都一样)。

    不过 Caddy 的有 20 MB (感觉有点大材小用),你这个就 4.40 MB~
    jerrodpoole
        15
    jerrodpoole  
       2021-03-30 15:29:28 +08:00   1
    rclone.exe serve http --addr :8080 --user admin --pass password e:/
    ↑一直用 rclone,也是一条命令搞定支持。也支持 serve webdav/sftp/dlna/ftp 等等
    JustSong
        16
    JustSong  
       2021-03-30 16:03:45 +08:00   1
    我之前也用 Go 写了一个,供参考: https://github.com/songquanpeng/go-file
    0o0O0o0O0o
        17
    0o0O0o0O0o  
       2021-03-30 17:32:10 +08:00 via Android   1
    loading
        18
    loading  
       2021-03-30 17:51:02 +08:00 via Android   1
    nginx 不好么?
    或者同是 golang 的 caddy 。
    aheadlead
        19
    aheadlead  
       2021-03-30 17:56:37 +08:00 via iPhone   1
    赞 能不能考虑集成个 upnp ?
    SenLief
        20
    SenLief  
       2021-03-30 18:19:00 +08:00   1
    @love 如果是安卓手机不妨下载一个叫 文件闪传的 app,类似于 ftp,我现在拿来管理相册,传文件很好用。
    love
        21
    love  
       2021-03-30 18:39:08 +08:00   1
    @SenLief 你说的这个是类似 miui 这种文件管理器自带的 ftp 功能吧,也是电脑上可以直接浏览手机内容,且是在文件管理器里,比浏览器要方便传文件吧。
    但是传单个或少量文件还是 miniserve 这种方便,因为不需要先在手机打开 ftp 功能再在电脑上打开手机管理界面复制文件。
    nanmu42
        22
    nanmu42  
    OP
       2021-03-30 19:15:06 +08:00
    @aheadlead 感谢意见。那样就有点重了 XD
    Kobayashi
        23
    Kobayashi  
       2021-03-30 22:04:23 +08:00 via Android   1
    @love 上传管理我用这个 https://github.com/filebrowser/filebrowser

    楼主这需求其实直接 Nginx 就完事儿了。
    kukat
        24
    kukat  
       2021-03-31 02:11:31 +08:00   1
    发现好多轮子 哈哈
    我用 caddy
    Cbdy
        25
    Cbdy &nbs;
       2021-03-31 07:51:49 +08:00 via Android   1
    npx serve
    root01
        26
    root01  
       2021-03-31 09:03:28 +08:00   1
    chfsgui 最香了
    iminto
        27
    iminto  
       2021-03-31 09:24:31 +08:00   1
    chfs 是最香的。是我找到的唯一一个满足我需求的。

    权限配置很细。未登录可以查看,登陆可以编辑。很多网盘不登陆要么啥都能干,要么就算查看都看不了。而且还支持 webdav 。

    可惜就是不开源,而且是 C 语言写的。
    windardyang
        28
    windardyang  
       2021-03-31 12:58:44 +08:00   1
    , 看下我这个,不但提供服务器 ,还提供下载器。[godown]( https://github.com/windard/godown/), 同 Golang
    internelp
        29
    internelp  
       2021-03-31 14:35:11 +08:00   1
    挺好用的工具,赞一个。
    anxn
        30
    anxn  
       2021-03-31 16:10:19 +08:00 via Android   1
    建议 readme 放一张演示截图
    anxn
        31
    anxn  
       2021-03-31 16:37:11 +08:00
    @anxn 用了 不错
    macy
        32
    macy  
       2021-03-31 20:52:49 +08:00   1
    我也写了类似的,也是 electron,没有遇到编译的问题,感觉挺快的,https://github.com/williamnie/netSend,纯 js 的,流下载,内网能跑满带宽
    Y29tL2gwd2Fy
        33
    Y29tL2gwd2Fy  
       2021-04-01 01:54:44 +08:00 via Android   1
    我太菜了 sftp 路过
    bequt
        34
    bequt  
       2021-04-01 07:37:42 +08:00   1
    在用站内 webd,虽然有广告,但是用 c 写的程序就是爽
    bequt
        35
    bequt  
       2021-04-01 07:40:11 +08:00   1
    来吧 来吧,一起分享出来吧。看来需求还是有的
    cubecube
        36
    cubecube  
       2021-04-02 19:21:32 +08:00   1
    everything 开 http 就有这个功能
    linux 开个 nginx 似乎也解决了
    flynaj
        37
    flynaj  
       2021-04-04 02:09:38 +08:00 via Android   1
    golang 几行代码就可以写出来确实方便快捷。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3175 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 00:34 PVG 08:34 LAX 17:34 JFK 20:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86