Как отправить в ответ REST файл Excel в go с swagger? - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь отправить в ответ файл Excel, но в нем я получаю двоичные данные. Если попытаться использовать данные отклика как файл xlsx, Excel покажет, что они повреждены. Однако, если сохранить его локально, все в порядке. Для создания файла xlsx я использую tealeg / xlsx. Что я делаю не так?

Перейти:

file := xlsx.NewFile()
...
// filling file with data
...
// works fine
err = file.Save("asd.xlsx")
if err != nil {
    fmt.Printf(err.Error())
}
// something went wrong
buffer := new(bytes.Buffer)
if err := file.Write(buffer); err != nil {
    return nil, err
}
r := bytes.NewReader(buffer.Bytes())
cr := ioutil.NopCloser(r)

Swagger:

get:
      tags:
        - "Report"
      summary: ""
      description: ""
      consumes:
        - "application/json"
      produces:
        - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
      responses:
        200:
          description: ""
          schema:
            type: file

1 Ответ

0 голосов
/ 05 июля 2019

Вам нужно добавить заголовок Content-Type перед записью содержимого xlsx через http.

    r.Header.Set("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
...