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

2018-05-28 10:22:39 +08:00
 vix
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)
3799 次点击
所在节点    分享创造
21 条回复
sunny352787
2018-05-28 10:31:30 +08:00
caddy 了解一下,有插件
missdeer
2018-05-28 10:49:28 +08:00
支持

@sunny352787 caddy 文档太碎了
fy
2018-05-28 11:01:24 +08:00
哇,资瓷,看着很棒。star 了
kefengong
2018-05-28 11:06:50 +08:00
已 star
vix
2018-05-28 12:51:19 +08:00
@sunny352787 caddy 知道,插件还真不知道。有时间的话折腾下。
7654
2018-05-28 13:20:20 +08:00
上传看不到进度,局域网上传 500MB 文件卡住了
点击文件块无反应
sunny352787
2018-05-28 13:27:17 +08:00
vix
2018-05-28 13:29:23 +08:00
@7654 能贴个浏览器的 console 或者后台输出看看吗?
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
kefengong
2018-05-28 16:15:45 +08:00
提了个自动打开浏览器的 pr 😂 ok 的话 review 一下
vix
2018-05-28 16:19:32 +08:00
@7654 根据 log 不能确定(笑哭),可能是网络问题。
另外由于默认做了限速,可以试试改一下根目录下面 config.json 的 MaxUpBytesPerSec 和 MaxDownBytesPerSec 的值到 10000000 的样子,速战速决。
fanyangyang
2018-05-28 17:59:22 +08:00
可以放出网址哦
vix
2018-05-28 22:27:17 +08:00
@kefengong 已 merge.
vix
2018-05-28 22:27:30 +08:00
@fanyangyang 主要是怕放上来最后成福利共享所了😅.
eryuan
2018-05-28 22:40:53 +08:00
支持 已 star
fanyangyang
2018-05-28 22:45:59 +08:00
@vix 怕被封的都放你那里,哈哈
coolzilj
2018-05-29 11:50:29 +08:00
原生的 mux, ratelimit, httpworker 全部都自己实现,就一个 jwt 外部依赖,老哥稳。代码规范,没有啥拼写错误,条理清晰,对新人来说是个不可多得的学习项目,强烈推荐,感谢开源,已 star~
vix
2018-05-29 13:10:08 +08:00
@coolzilj 老铁过奖,自己也是想借着这个小项目学点东西。
zhangneww
2018-05-29 14:21:50 +08:00
7 楼被无视了,https://github.com/filebrowser/filebrowser 挺好的
natforum
2018-05-30 12:02:31 +08:00
大佬有没有考虑过接入 ipfs

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX