go - 将原始 Goreq.body 响应附加到文件

标签 go gorequest

您好,我想将下载的文件原始响应附加到文件。假设我正在尝试下载一个 1GB 的文件,并且下载过程将在多个请求中完成。比方说每个请求 100mb。现在,所有 10 个部分都应该放入一个文件中以供读取。我不知道如何实现这一目标。我正在使用 GOREQ 请求此资源,原始数据采用 Goreq.body 格式。下面是我的示例代码

newFile := "./newfile.gz"
out, err := os.Create(newFile)
defer out.close()  

if err != nil {
    fmt.Println("Failed to download file")
    return
}

for i := 0; i < 10; i++ {
    // This will return the items in part of 100mb/part. 
    // GetRawDataFromEbay returns a goreq.body(raw) as its response
    response, _ = GetRawDataFromEbay(10485760) 

    out.Write(response) // This does not work
}

我知道 Write 接受 []byte 作为参数。但是如何将检索到的 goreq.body 原始数据附加到文件中呢?

最佳答案

您可以使用 fileObj.WriteAt(content, offSet) 将内容附加到文件中。

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("test")
    f, err := os.Create("/Users/sakthi-2528/test/test213123.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    n, err := f.WriteAt([]byte("Foo"), 0)
    if err != nil {
        fmt.Println(err)
        return
    }
    off := n
    n, err = f.WriteAt([]byte("Bar"), int64(off))
    if err != nil {
        fmt.Println(err)
        return
    }
    off += n
    _, err = f.WriteAt([]byte("FooBar"), int64(off))
    if err != nil {
        fmt.Println(err)
        return
    }
    defer f.Close()
}

关于go - 将原始 Goreq.body 响应附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259285/

相关文章:

http - 即使 OPTIONS 返回 HTTP 200,CORS 也不起作用

regex - 具有拉丁字符的 Golang 正则表达式边界

go - 如何在两个 goroutine 之间共享一个 HTTP 请求实例?

gorequest 包 : check specifically for timeout

curl - 使用 Go 的 POST 失败但适用于 curl

go - 使用 Golang 进行功能测试

compiler-construction - go build vs go build file.go

mongodb - 使用 SetSort 时,Mongo Go 驱动程序出现接口(interface)转换错误