Golang Go语言中用golang撸了个文件中转服务

发布于 1周前 作者 sinazl 来自 Go语言

用于放 VPS 上中转文件, go 单文件, 部署无第三方依赖. 用 curl -IL 仅获取 Header 得到下载文件长度, 调用 wget 下载, 前端页面计算实现进度环, 这个进度环弄了挺久.

若配合 kcptun( https://www.v2ex.com/t/297296 https://github.com/xtaci/kcptun), 拖回本地的速度可以飞起来

Demo http://23.83.230.242/file_download_proxy/

Source https://github.com/hanjm/file_download_proxy

http://ww1.sinaimg.cn/large/cfe1407cgy1fckgltj5vrj21dl0g2wh1.jpg


Golang Go语言中用golang撸了个文件中转服务

更多关于Golang Go语言中用golang撸了个文件中转服务的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

45 回复

图挂了?

更多关于Golang Go语言中用golang撸了个文件中转服务的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


服务器收到一大堆大文件 TestFile,然后塞满了…
v2ex 真厉害

2017/02/09 10:58:30 Download: length:9.77 GB source:http://speed.hetzner.de/10GB.bin filename:10GB-1486655910.bin

不是有现成的 rapidleech
你这个可以加个密码登录

下载 URL 无文件名的网址没有“下载地址”(下载后)

比如你下载“ http://23.83.230.242/file_download_proxy/”这个网址试试,下载地址那一栏是空的

我去,被人 xss 了。

某些人也是病态,丢了一堆 10G 大小的文件的链接上去。

明显的素质问题

先给你加个 Star 。

谢谢. 发现是前端显示判断有问题

增加一个限制文件大小的选项吧 要不然那些病态的人会老是去尝试做一些病态的事情

其实以前还是蛮想要个这东西的,如果有 PHP 的就好了,不过调用 exe 文件实在是……

好 Content-Length < 3G

也可以让 go 去请求文件 但是要处理 30X

速度还真快,谢谢。下了个 freebsd

正好最近在学 go , star

咦,楼主你这个是搬瓦工的 FREMONT 节点啊?翻墙效果咋样,电信。

是的 ss 速度不快 一两百 KB/s 用 kcptun 转后就不错了,youtube 可 HD

xss 在哪里?

不支持磁链啊

之前也自己搞了个 download.sh ,下载后放在 Nginx 下,开迅雷下载速度也是飞起,不过没有实现前端页面。

正好需要这个 thx

感觉要被玩坏

奇怪,国内一般不是推荐 LOS ANGELES 的节点么 0 0

不加密码不敢装到自己 vps ……

楼主有考虑支持其他类型吗? bt 和磁力

自用的话搞个长点的 token 就行了 好,加

不是了一下,竟然是 404
什么问题?

……乞丐版 aria2 ?

磁链我觉得可以调用 transmission 来下载

Cloud Torrent 不错。



大赞啊, 感谢已发送!

Go 的库确实越来越丰富了,我以为没有 torrent 的库呢。。

github.com/anacrolix/torrent

感谢,这个不错

现在支持 torrent 吗?

gopher://120.27.202.184:32/1.php 是什么姿势


不支持, 看 提到的 https://github.com/jpillora/cloud-torrent, 试了下, 功能非常全

这个需求,用 nginx 的反代是最合适的。
而且,不占用服务器空间。

姿势不错哦



用 vps 下载磁链 /torrent 可能不小心下到了受版权保护的资源, 我正测试加磁链的功能, 下了个降临, 然后第一次收到了 DCMA complaint

我一般在 Daocloud 提供的测试容器上用 Cloud Torrent …虽然只能挂一天,不过小资源也够用了。

Absolutely fantastic

2017-03-17 更新,使用 websocket 实现仅当有任务在下载时推送文件状态更新,代替原来消耗过大的 ajax 轮询.

你好!很高兴看到你使用Go语言(Golang)开发了一个文件中转服务。在Go语言中实现文件中转服务是一个既实用又具挑战性的项目,它涉及到文件处理、网络编程以及可能的并发控制等多个方面。以下是一些建议和优化方向,希望能对你的项目有所帮助:

  1. 文件处理:确保你的服务能够高效地处理文件的上传和下载。考虑使用内存映射文件(mmap)或流式处理来减少内存占用。

  2. 并发控制:Go语言以其强大的并发处理能力著称。利用goroutines和channels,你可以轻松实现高并发的文件处理。注意避免竞态条件,确保数据的一致性。

  3. 网络编程:使用net/http包来构建HTTP服务器,处理文件上传和下载的请求。考虑实现RESTful API,以便与其他服务进行集成。

  4. 安全性:确保你的服务具有足够的安全性。对上传的文件进行验证,防止恶意文件上传。使用HTTPS来保护数据传输过程中的安全。

  5. 错误处理:实现健壮的错误处理机制,确保在出现错误时能够优雅地恢复,并向用户提供有用的错误信息。

  6. 日志记录:记录详细的日志信息,以便在出现问题时进行调试和追踪。

  7. 性能优化:对服务进行性能测试,找出瓶颈并进行优化。考虑使用缓存技术来提高性能。

希望这些建议能对你的项目中转服务有所帮助!如果你有任何具体的问题或需要进一步的帮助,请随时提问。

回到顶部