gpt4 book ai didi

http - 通过HTTP发送文件而没有实际创建任何文件

转载 作者:行者123 更新时间:2023-12-01 22:35:13 24 4
gpt4 key购买 nike

我需要向一些仅将文件作为multipart/form-data接受的API发送POST请求。但是我有数据作为[]byte。现在,我可以做的是将此[]byte数据写入一个临时文件,然后发送该文件。经过一番谷歌搜索后,我发现以下代码可以上传文件:

fileDir, _ := os.Getwd()
fileName := "upload-file.txt"
filePath := path.Join(fileDir, fileName)

file, _ := os.Open(filePath)
defer file.Close()

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", filepath.Base(file.Name()))
io.Copy(part, file)
writer.Close()

r, _ := http.NewRequest("POST", "http://example.com", body)
r.Header.Add("Content-Type", writer.FormDataContentType())
client := &http.Client{}
client.Do(r)

经过更多的谷歌搜索后,我学会了 this。对于我来说,发送文件似乎只需要文件名和内容(可能是大小)。我可以提供所有这些数据,而无需创建临时文件,写入该文件,然后再次从该文件读回。

有可能这样做吗?我可以以某种方式发送[]个字节作为文件吗?一个工作示例非常受赞赏。

最佳答案

直接将[]byte写入零件。使用此代码将 slice content写入零件并发布表单:

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "insert-name-here")
part.Write(content) // <-- content is the []byte
writer.Close()

r, _ := http.NewRequest("POST", "http://example.com", body)
r.Header.Add("Content-Type", writer.FormDataContentType())
err := http.DefaultClient.Do(r)
if err != nil {
// handle error
}

关于http - 通过HTTP发送文件而没有实际创建任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58741016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com