【发布时间】:2021-03-17 09:49:54
【问题描述】:
我是 Golang 的新手,想用 client_api_key、bucketclient_api_key 将 csv 文件上传到网站/em> 和 文件夹。有没有针对此的 Golang 解决方案?我正在通过 Golang 创建 csv 文件。
这是 curl 请求
curl --location -- request POST 'https://drivex-service.sample.com/report/api/upload' \
-- hearder 'Cookie: '89825f9123456fa0' \
-- form 'Client_api_key=vfBM-zrfumyh9WUTKGbQ=' \
-- form 'bucket=bucket1' \
-- form 'folder=ROLE/YES/FOLDER' \
-- form 'files[]=@/D:/User/example.csv'
这是 python 发布请求
def drivex_upload(file_obj):
data = {
"folder": 'ROLE/YES/FOLDER',
"client_api_key": 'vfBM-zrfumyh9WUTKGbQ=',
"bucket": 'bucket1'
}
headers = {
"Accept": "application/json",
"ContentType": "multipart/form-data"
}
files = {
"files[]": file_obj
}
r = requests.post(
self.upload_url,
data=data,
files=files,
headers=headers,
verify=False,
)
if r.status_code == 200:
json_data = r.json()
return r, None
else:
return r, "error while uploading"
我在 Golang 中尝试了以下操作(不使用 multiparse),但不确定将 Client_api_key、存储桶和文件夹放在哪里
file, err := os.Create(fileName)
if err != nil {
log.Fatal(err)
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
// define column headers
// write column headers
writer.Write(headers)
for key := range m {
r := make([]string, 0, 1+len(headers))
r = append(r, m.field1,m.field2,m.field3)
writer.Write(r)
}
req, err := http.NewRequest("POST", "https://drivex-service.sample.com/report/api/upload", file)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Accept", "application/json")
非常感谢帮助构建一个有效的 Golang POST 请求!
【问题讨论】:
标签: python csv go curl http-post