如何解决通过 API 调用在 Golang 中上传 csv 文件提供 Curl 请求和 python 请求
我是 Golang 的新手,想将 csv 文件上传到带有 client_api_key、bucket 和 文件夹。有没有 Golang 解决方案?我正在通过 Golang 创建 csv 文件。
这是卷曲请求
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、bucket 和文件夹放在哪里
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,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 请求的帮助!
解决方法
我认为这样做了:
package main
import (
"net/http"
"net/url"
"os"
)
func main() {
r,e := http.NewRequest(
"POST","https://drivex-service.sample.com/report/api/upload",nil,)
if e != nil {
panic(e)
}
f,e := os.ReadFile("file.csv")
if e != nil {
panic(e)
}
v := url.Values{
"Client_api_key": {"=vfBM-zrfumyh9WUTKGbQ="},"bucket": {"bucket1"},"files[]": {string(f)},"folder": {"ROLE/YES/FOLDER"},}
r.URL.RawQuery = v.Encode()
r.Header.Set("Cookie","89825f9123456fa0")
new(http.Client).Do(r)
}
您还应该能够将查询字符串作为正文发送,以防万一 工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。