使用与curl请求等效的Go语言上载多部分文件
下面是我的示例curl请求使用与curl请求等效的Go语言上载多部分文件,curl,go,Curl,Go,下面是我的示例curl请求 curl -X POST -F 'upload=@/home/user/file.txt' 'some_url' -H 'api: api_key' -H 'callback_url:callback_url' 我想用围棋语言做同样的事情。谁能帮帮我吗 我已经试过了 package main import ( "fmt" "net/http" "io/ioutil" "os" "log" ) func main() { data, err := os.Open
curl -X POST -F 'upload=@/home/user/file.txt' 'some_url' -H 'api: api_key' -H 'callback_url:callback_url'
我想用围棋语言做同样的事情。谁能帮帮我吗
我已经试过了
package main
import (
"fmt"
"net/http"
"io/ioutil"
"os"
"log"
)
func main() {
data, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
req, _ := http.NewRequest("POST", "url", data)
req.Header.Set("api", "api_key")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
你试过什么?包括你的代码。你遇到了什么问题?@Flimzy,谢谢你的回复,我已经编辑了我的问题。你的尝试有什么问题?@Flimzy,文件没有上传。请在你的问题中包括这一点。并解释您如何知道它没有被上传(您是否收到错误?您看到了什么输出?您期望得到什么?)并检查您的错误。
package main
import (
"fmt"
"net/http"
"io/ioutil"
"os"
"log"
)
func main() {
data, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
var b bytes.Buffer
wr := multipart.NewWriter(&b)
part, err := wr.CreateFormFile("upload", filepath.Base("file.text"))
if err != nil {
fmt.Println("do something")
}
_, err = io.Copy(part, data)
wr.WriteField("api", "api_key")
wr.WriteField("callback_url", "callback_url")
wr.Close()
req, _ := http.NewRequest("POST", "url", &b)
req.Header.Set("api", "api_key")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}