简单的HTTP POST-in随文件上传
我只需要知道一种非常简单的方法,使用HTTP POST将文件发送到远程服务器。我已经尝试了这么多复杂的方法,但都没有成功。我的curl命令如下:简单的HTTP POST-in随文件上传,http,go,post,upload,Http,Go,Post,Upload,我只需要知道一种非常简单的方法,使用HTTP POST将文件发送到远程服务器。我已经尝试了这么多复杂的方法,但都没有成功。我的curl命令如下: curl https://api.example.com/upload \ --user api:YOUR_API_KEY \ --data-binary @file.jpg \ --dump-header apiresponse.txt 我更喜欢不使用多部分的东西。我也更喜欢使用io.Reader的东西,这样我以后就可以轻松地实现进度条了。下
curl https://api.example.com/upload \
--user api:YOUR_API_KEY \
--data-binary @file.jpg \
--dump-header apiresponse.txt
我更喜欢不使用多部分的东西。我也更喜欢使用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))
}
“我已经尝试了这么多复杂的方法,但没有运气”-你能展示一下你尝试了什么,遇到了什么问题吗?就是这样
os.Open
这就是我一直在寻找的缺少的简单性。成功了。别忘了关闭()文件。谢谢你的提示。IMHO Go应该对未关闭的文件句柄进行某种内部检查。