Ame*_*eer -1 upload post http go
我只需要知道一种在 Go 中使用 HTTP POST 将文件发送到远程服务器的极其简单的方法。我已经尝试了很多复杂的方法但没有运气。我的curl命令是这样的:
curl https://api.example.com/upload \
--user api:YOUR_API_KEY \
--data-binary @file.jpg \
--dump-header apiresponse.txt
Run Code Online (Sandbox Code Playgroud)
我更喜欢不使用多部分的东西。我还更喜欢使用 io.Reader 的东西,这样我以后就可以轻松实现进度条。
我是这样做的。感谢彼得指出了os.Open我所缺少的部分。
func SendPostRequest(url string, filename string) (string, []byte) {
api_key := ReadAPIKey("../.api_key")
client := &http.Client{}
data, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}
req, err := http.NewRequest("POST", url, data)
if err != nil {
log.Fatal(err)
}
req.SetBasicAuth("api", api_key)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
content, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
return resp.Status, content
}
func main() {
status, content := SendPostRequest("https://api.example.com/upload", "test.jpg")
fmt.Println(status)
fmt.Println(string(content))
}
Run Code Online (Sandbox Code Playgroud)