http 下载

whispermemory · 2014-02-19 02:47:00 · 6839 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2014-02-19 02:47:00 的主题,其中的信息可能已经有所发展或是发生改变。

使用 http request 请求一个文件,读到 buffer 之后存文件。之后手动打开文件无法打开(.tar.gz)。 看看 net/http 文档没找到跟文件下载有关的说明,是不是我思路错了?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6839 次点击  ∙  1 赞  
加入收藏 微博
8 回复  |  直到 2014-02-21 08:41:07
polaris
polaris · #1 · 11年之前

不会吧。我试了可以。代码如下:

package main

import (
    "net/http"
    "io/ioutil"
)

func main() {
    resp, err := http.Get("http://pecl.php.net/get/vld-0.12.0.tgz")
    if err != nil {
        panic(err)
    }   
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }   
    err = ioutil.WriteFile("vld-0.12.0.tgz", body, 0777)
    if err != nil {
        panic(err)
    }   
}
whispermemory
whispermemory · #2 · 11年之前

我用的 fmt.Fprintf() 写文件的。 难道还不一样。 再试试。

whispermemory
whispermemory · #3 · 11年之前

用 fmt.Fprintf 写的会多出100byte 。

whispermemory
whispermemory · #4 · 11年之前
whispermemorywhispermemory #3 回复

用 fmt.Fprintf 写的会多出100byte 。

额 看错了,是一样的大小,但是解压不出来。

polaris
polaris · #5 · 11年之前
whispermemorywhispermemory #4 回复

#3楼 @whispermemory 额 看错了,是一样的大小,但是解压不出来。

你先试试按我的方式行不行吧。

whispermemory
whispermemory · #6 · 11年之前
polarispolaris #5 回复

#4楼 @whispermemory 你先试试按我的方式行不行吧。

是可行的。

whispermemory
whispermemory · #7 · 11年之前
polarispolaris #5 回复

#4楼 @whispermemory 你先试试按我的方式行不行吧。

#5楼 @polaris 比较郁闷为啥 fmt 不行。 ioutil 就可以。

polaris
polaris · #8 · 11年之前

fmt 包是做格式化输入输出的,你这种字节流数据,而且是压缩包的,fmt 会带入格式化的信息进去,所以导致格式不对了。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传