Как разместить файл и поля формы в одном запросе? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующий код, который я пытался использовать для отправки запроса на публикацию, где я хочу загрузить файл js.map в Bugsnag.

...  
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile(filetype, filename)

if err != nil {
    log.Fatal(err)
}

fmt.Printf("Sending %s to bugsnag", filename)

io.Copy(part, file)
writer.Close()
request, err := http.NewRequest("POST", bugsnagUrl, body)

if err != nil {
    log.Fatal(err)
}

request.Header.Add("Content-Type", writer.FormDataContentType())

// This is where my problem seems to be, I can't add form values this way because the map is nil
request.Form.Add("apiKey", bugsnagToken)
request.Form.Add("minifiedUrl", fileurl)
request.Form.Add("sourceMap", filename)
request.Form.Add("overwrite", "true")
client := &http.Client{}

response, err := client.Do(request)

if err != nil {
    log.Fatal(err)
}
defer response.Body.Close()

В приведенном выше примере выдается следующая ошибка

паника: назначение записи в нулевой карте

маршрут 1 [выполняется]: net / url.url.Values.Add (...)

Мне не удалось найти примеры того, как это сделать, я использовал пример того, как загрузить файл из этого вопроса , чтобы получить это далеко.

Кажется, я могуопубликовать файл, но как я могу опубликовать файл, а также включить значения формы сообщения в свой запрос?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы должны добавить поля формы, как это

writer.WriteField("apiKey", bugsnagToken)
writer.WriteField("minifiedUrl", fileurl)
writer.WriteField("sourceMap", filename)
writer.WriteField("overwrite", "true")
writer.Close()
...