POST文件和嵌套参数golang

时间:2016-11-18 13:36:49

标签: go

我已经发布了一个文件和一些参数,但现在我需要发送一个带结构的嵌套参数,我不知道在哪里使用它(我在Go中是新的)。

这就是我所拥有的:https://play.golang.org/p/L4qx6AZhUO

现在,我正在创建这个结构:

type S3 struct {
    Accesskeyid     string
    Secretaccesskey string
    Bucket          string
}

type Test struct {
    Outputformat string
    Wait         string
    Output       S3
    File         []byte
}

我想发送Test struct with the file。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,所以考虑到你告诉我的内容,以及我对你的例子所掌握的一些信息,我可能会做这样的事情。

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

type S3 struct {
    Accesskeyid     string
    Secretaccesskey string
    Bucket          string
}

type Test struct {
    Outputformat string
    Wait         string
    Output       S3
    File         []byte
}

func main() {
    myStrut := Test{
        Outputformat: "Json",
        Wait:         "Some Time",
        Output: S3{
            Accesskeyid:     "my id",
            Secretaccesskey: "secret id",
            Bucket:          "east",
        },
        File: []byte(`some bytes`),
    }
    jsonValue, err := json.Marshal(myStrut)
    if err != nil {
        panic(err)
    }
    fmt.Printf("Test showing that data was marshalled\n %q\n", jsonValue)
    resp, err := http.Post("some url", "application/json", bytes.NewBuffer(jsonValue))
    if err != nil {
        panic(err)
    }
    fmt.Println(resp.Status)

}

现在,根据我在评论中发现的内容,您可能也无法将文件作为字节数组打开以分配给您的结构。以下是一个示例,您可以使用它帮助您将文件作为字节数组打开,以便将这些字节分配给结构。

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {

    //An example of how to open a file and turn it into bytes for your struct
    byteArray, err := ioutil.ReadFile("input.txt")
    if err != nil {
        panic(err)
    }
    fmt.Println(byteArray)

}