curl - 如何使用golang代码上传文件

标签 curl file-upload go

使用 golang 代码,我必须使用他们的 api 将文件传输到远程服务。他们的要求是请求不得使用multipart/form-data。我试过这个 curl 命令:

curl -i -X PUT -F filedata=@text.txt -H "Content-Type: text/plain"  https://url.of.endpoint.com

它不起作用,因为它模拟了表单,但是这个命令:

curl -i -X PUT -T text.txt -H "Content-Type: text/plain"  https://url.of.endpoint.com

完美运行。

如何将此 curl 命令转换为 golang 代码?

最佳答案

您必须创建一个“PUT”请求并将其请求主体设置为文件的内容:

package main

import (
    "log"
    "net/http"
    "os"
)

func main() {
    data, err := os.Open("text.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer data.Close()
    req, err := http.NewRequest("PUT", "http://localhost:8080/test.txt", data)
    if err != nil {
        log.Fatal(err)
    }
    req.Header.Set("Content-Type", "text/plain")

    client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    defer res.Body.Close()
}

关于curl - 如何使用golang代码上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656898/

相关文章:

bash - 如何在 CURL shell 脚本中捕获超时/错误?

jquery - 有没有好的 jQuery 拖放文件上传插件?

go - 'thread pooling' 与 Go 相关吗?

go - 在 OpenBSD 上编译 Golang 时出现 "cannot reserve arena virtual address space"

java - Android:放大和缩小页面 curl

c++ - libcUrl 错误请求。似乎没有发送 POST 正文,只有标题

ssl - CURL 不验证证书

php - 在使用 PHP 上传之前调整照片大小

c# - IIS 7.5 - Windows Server 2008 - 文件上传 405 错误。代码在 windows 2003 服务器中工作

go - 如何重定向到一个网址