2014-01-18 18 views
5

我使用golang作为选择的编程工具。如何使用简历支持下载文件?

什么我想写的是,下载与使用开支持范围请求的HTTP头类似于aria2c 一些大文件的程序。

+1

当前的答案是有用的,如果你知道你只打算使用http进行下载。如果你想支持更广泛的协议,我建议你找一个绑定到libcurl - 或类似的东西。 – Cubic

+1

使用libcurl实际上是一个好方法。事实上我找到了一个包https://github.com/go-av/curl,它在Go-Lang中编写了非常整洁的东西,并且在获取文件时几乎拥有我需要的东西。 – Degreane

+0

[getparty](https://github.com/vbauerster/getparty) - 可能是你正在寻找的东西。它是用Go编写的,利用“het/http”包,并且可以分区下载文件。简历也支持。 –

回答

5

要做到这一点,你应该学习的部分14.16 - Content-Range - 在RFC document describing the HTTP/1.1 protocol,然后运用这些知识来操作执行客户端请求时发送的HTTP标头设置 - 看到documentation和例子在那里。

要计算请求的范围,要继续下载,应该获取当前文件的大小。这可以在Stat()函数返回的结果中找到,该函数可以在打开的文件上调用 - *os.File通过调用os.Open()返回。

您应该以追加模式打开文件,然后使用类似io.Copy()的内容将来自Body HTTP响应成员的数据流式传输到文件对象。

做你自己的研究如何在Go上读取HTTP响应中的数据 - 它们在互联网上很丰富。