curl -T golang 相当于在 Starrocks 中使用

问题描述 投票:0回答:1

我需要在 Golang 中使用转录卷曲表达式,但是当我尝试转换时

curl --location-trusted -u <username>:<password> -H "label:123" \     -H "Expect:100-continue" \     -H "column_separator:," \     -H "columns: id, name, score" \     -T example1.csv -XPUT \     http://<fe_host>:<fe_http_port>/api/mydatabase/table1/_stream_load

我找不到在 http.NewRequest() 中发送 -T example1.csv 的正确且规范的方式

任何人都可以解释一下curl -T 文件是如何工作的吗? 我应该阅读内容并将其作为请求正文传递吗?

我应该这样做吗?

file_contents, err := os.ReadFile('example.csv'); if err != nil {   return err      }
r := bytes.NewReader(file_contents)

req, err := http.NewRequest("PUT", "http://someURL.com", r)

我尝试将文件发送到 starrocks 流加载器。

go starrocks
1个回答
0
投票

如果你想在 Go 中上传文件,你可以使用

curl -T
包来模仿
net/http
命令的行为。这是一个简单的演练:

  1. 读取文件:首先,您需要获取文件的内容。您可以使用

    ioutil.ReadFile
    将整个文件读入字节片。

  2. 创建请求: 接下来,使用

    http.NewRequest
    创建 HTTP 请求。对于上传文件,您通常会使用 PUT 方法,并将文件内容作为请求正文传递。

  3. 设置标头:不要忘记添加服务器可能需要的任何标头。例如,您可以设置内容类型、身份验证或其他参数的标头。

  4. 发送请求:最后,创建一个HTTP客户端,执行请求,并处理响应。

以下是如何在 Go 中将它们组合在一起的方法:

package main

import (
    "bytes"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    fileContents, err := ioutil.ReadFile("example1.csv")
    if err != nil {
        log.Fatalf("Error reading file: %v", err)
    }

    req, err := http.NewRequest("PUT", "http://<fe_host>:<fe_http_port>/api/mydatabase/table1/_stream_load", bytes.NewReader(fileContents))
    if err != nil {
        log.Fatalf("Error creating request: %v", err)
    }

    req.Header.Set("label", "123")
    req.Header.Set("Expect", "100-continue")
    req.Header.Set("column_separator", ",")
    req.Header.Set("columns", "id, name, score")

    req.SetBasicAuth("<username>", "<password>")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Fatalf("Error sending request: %v", err)
    }
    defer resp.Body.Close()

    log.Printf("Response status: %s", resp.Status)
}

只需将

<fe_host>
<fe_http_port>
<username>
<password>
与您的实际详细信息交换即可。此代码将像
curl -T
一样上传您的文件。

© www.soinside.com 2019 - 2024. All rights reserved.