我需要向某个 API 发送 POST 请求,该 API 只接受multipart/form-data. 但我的数据为[]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)
经过更多谷歌搜索后,我了解到了这一点。在我看来,发送文件时我们只需要文件名和内容(可能是大小)。我可以提供所有这些数据,而无需创建临时文件、写入该文件,然后再次从该文件读回。
可以这样做吗?我可以以某种方式将 []bytes 作为文件发送吗?非常感谢一个工作示例。
慕后森
相关分类