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

[开个源]Golang+ReactJS 嫩了个简单的文件共享服务+语言&妇联

  •  1
     
  •   vix · 2018-05-28 10:22:39 +08:00 · 2505 次点击
    这是一个创建于 565 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://i.loli.net/2018/05/27/5b0a8b136bbdf.jpg

    之前有时想共享个文件, 总是会碰到这样那样的限制, 要么太大, 要么要装客户端, 要么手太懒懒得用 U 盘(是手懒不是我懒:D ).
    总感觉自己是个假码农, 传文件都搞不定. 正好这阵稍微有点时间, 遂用 Go 和 React 自己鲁了一个.
    下载解压启动, 三板斧直接开用.
    已开源, 求 star. [quickshare]( https://github.com/ihexxa/quickshare)

    简单说下特点
    - 支持 Linux, Mac 和 Windows
    - 支持断点续传(下载, 上传可以支持但还没完全完成)
    - 浏览器, 无客户端
    - 绿色
    - 支持限制上传下载速度
    - 支持限制最多下载次数
    - 生成私密下载链接
    - 简单的请求次数限制
    由于都是下班和周末鲁, 时间比较有限, 有些功能还待添加.

    搞完说说感想
    * Go 感觉一直比较受争议. 虽然两夺 TIOBE 年度最佳, 并且 2016 年差不多从 80 多名一波流杀入前 20, 最近又开始暴跌 (TIOBE 你的排名大概是手调的吧).
    * 撸狗(Go)也有一阵了, 简单概括下基本是"所撸即所得". 标准库够用, 虽然有些地方显得不那么灵活. 但是一般写完了, 就能直接跑起来. 有错也能够比较快速的定位到.
    * 这个项目的前端感觉不是很大型,所以没上 Redux 等状态管理和一些常用全家桶( styled component 等)
    * Javascript 还是动态一时爽,时不时火葬场的。如果有空考虑用 TS 搞一把。

    然后写着写着发现可以和妇联里的英雄做个对应(不是每种语言都"精通", 如果不是非常恰当,请指正补充)
    * 首先, 我觉得 Go 应该是美队:
    * 攻击手段简单 (语法简单)
    * 有些古板(部分语法, 比如没条件操作符)
    * 武器单一但够用 (简单全面的标准库)
    * 防守型, 各种 55 开, 有盾牌, 打不过你你也打不到我.(各种返回 error...)
    * 抵达战场要靠交通工具... (依赖管理...)
    * 坚强的(后)盾 (google)
    * "Hulk smash" ( go 关键字一键多线程)
    * 相比下来 Java 应该是钢铁侠
    * 武器库丰富, 导弹激光应有尽有(库, 生态)
    * 多套战甲海陆空全线作战(企业应用, 安卓)
    * 能量来自的能量堆(JVM)
    * 大家都认识托尼(Java 你不认识?)
    * 有作战伙伴 War Machine(scala 等)
    * C++应该是绿巨人浩克
    * 性格狂躁, 一言不合就拆迁 (语法特性多, 难驾驭)
    * 无敌的攻击力(高运行效率)
    * 主要近战(解决问题直接鲁, 而不是 npm install 一堆然后写一句话, 当然还是后者爽)
    * Python & Ruby 幻视+红女巫?

    欢迎补充, 不过别忘帮忙 star 个. :D [quickshare]( https://github.com/ihexxa/quickshare)
    第 1 条附言  ·  2018-05-28 12:49:47 +08:00

    quickshare

    贴图还是失败了。Append一次吧。

    21 回复  |  直到 2018-05-31 08:46:02 +08:00
        1
    sunny352787   2018-05-28 10:31:30 +08:00
    caddy 了解一下,有插件
        2
    missdeer   2018-05-28 10:49:28 +08:00
    支持

    @sunny352787 caddy 文档太碎了
        3
    fy   2018-05-28 11:01:24 +08:00
    哇,资瓷,看着很棒。star 了
        4
    kefengong   2018-05-28 11:06:50 +08:00 via Android
    已 star
        5
    vix   2018-05-28 12:51:19 +08:00
    @sunny352787 caddy 知道,插件还真不知道。有时间的话折腾下。
        6
    7654   2018-05-28 13:20:20 +08:00
    上传看不到进度,局域网上传 500MB 文件卡住了
    点击文件块无反应
        8
    vix   2018-05-28 13:29:23 +08:00 via Android
    @7654 能贴个浏览器的 console 或者后台输出看看吗?
        9
    7654   2018-05-28 14:06:01 +08:00
    @vix #8 文件总计 2.22G 格式 7z,只上传了差不多 400MB

    console.trace()
    api_upload.js:165:12
    e/this.upload/<
    api_upload.js:165:12
    console.trace()
    api_upload.js:165:12
    e/this.upload/<
    api_upload.js:165:12
    console.trace()
    api_upload.js:165:12
    e/this.upload/<
    api_upload.js:165:12


    qs2018/05/28 13:56:40 upload.go:85: pform map[start:[406000000] len:[2000000] shareid:[hashid]]
    qs2018/05/28 13:56:40 upload.go:86: mform &{map[shareid:[hashid] start:[406000000] len:[2000000]] map[chunk:[0xc0421ca0a0]]}
    qs2018/05/28 13:56:40 worker.go:84: finish cost: 97232 usec
    qs2018/05/28 13:56:41 upload.go:84: form map[len:[2000000] shareid:[hashid] start:[408000000]]
    qs2018/05/28 13:56:41 upload.go:85: pform map[len:[2000000] shareid:[hashid] start:[408000000]]
    qs2018/05/28 13:56:41 upload.go:86: mform &{map[shareid:[hashid] start:[408000000] len:[2000000]] map[chunk:[0xc0421ca190]]}
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 32660 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 1539 usec
    qs2018/05/28 13:56:41 upload.go:84: form map[shareid:[hashid] start:[410000000] len:[2000000]]
    qs2018/05/28 13:56:41 upload.go:85: pform map[shareid:[hashid] start:[410000000] len:[2000000]]
    qs2018/05/28 13:56:41 upload.go:86: mform &{map[shareid:[hashid] start:[410000000] len:[2000000]] map[chunk:[0xc04219e000]]}
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 4021 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 9977 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 998 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 0 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 13204 usec
    qs2018/05/28 13:56:41 worker.go:84: finish cost: 7035 usec
    qs2018/05/28 13:57:00 worker.go:84: finish cost: 0 usec
    qs2018/05/28 13:58:14 worker.go:84: finish cost: 1025 usec
    qs2018/05/28 13:58:14 worker.go:84: finish cost: 4658 usec
        10
    kefengong   2018-05-28 16:15:45 +08:00 via Android
    提了个自动打开浏览器的 pr 😂 ok 的话 review 一下
        11
    vix   2018-05-28 16:19:32 +08:00 via Android
    @7654 根据 log 不能确定(笑哭),可能是网络问题。
    另外由于默认做了限速,可以试试改一下根目录下面 config.json 的 MaxUpBytesPerSec 和 MaxDownBytesPerSec 的值到 10000000 的样子,速战速决。
        12
    fanyangyang   2018-05-28 17:59:22 +08:00
    可以放出网址哦
        13
    vix   2018-05-28 22:27:17 +08:00
    @kefengong 已 merge.
        14
    vix   2018-05-28 22:27:30 +08:00
    @fanyangyang 主要是怕放上来最后成福利共享所了😅.
        15
    eryuan   2018-05-28 22:40:53 +08:00
    支持 已 star
        16
    fanyangyang   2018-05-28 22:45:59 +08:00
    @vix 怕被封的都放你那里,哈哈
        17
    coolzilj   2018-05-29 11:50:29 +08:00
    原生的 mux, ratelimit, httpworker 全部都自己实现,就一个 jwt 外部依赖,老哥稳。代码规范,没有啥拼写错误,条理清晰,对新人来说是个不可多得的学习项目,强烈推荐,感谢开源,已 star~
        18
    vix   2018-05-29 13:10:08 +08:00 via Android
    @coolzilj 老铁过奖,自己也是想借着这个小项目学点东西。
        19
    zhangneww   2018-05-29 14:21:50 +08:00
    7 楼被无视了,https://github.com/filebrowser/filebrowser 挺好的
        20
    natforum   2018-05-30 12:02:31 +08:00
    大佬有没有考虑过接入 ipfs
        21
    vix   2018-05-31 08:46:02 +08:00 via Android
    @natforum 老铁这想法有点 6,我得先研究下。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2333 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 02:29 · PVG 10:29 · LAX 18:29 · JFK 21:29
    ♥ Do have faith in what you're doing.