Мне нужно отправить запрос POST в некоторый API, который принимает только файл как multipart/form-data
. Но у меня есть данные как []byte
. Теперь я могу записать эти []byte
данные во временный файл и затем отправить этот файл. После некоторого поиска в Google я нашел этот код для загрузки файла:
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)
После еще одного поиска в Google я выучил this . Мне кажется, для отправки файлов нам нужно только имя файла и содержание (возможно, размер). Все эти данные я могу предоставить без создания временного файла, записи в этот файл и последующего повторного чтения из этого файла.
Возможно ли это сделать? Можно ли как-нибудь отправить [] байтов в виде файла? Рабочий пример очень ценится.