#go #ini #go-echo
#Вперед #ini #go-echo
Вопрос:
У меня есть ECHO framework, который должен возвращать файл по запросу, и он работает хорошо
func IniExport(c echo.Context) error{
cfg := ini.Empty()
if section, err := cfg.NewSection("test_section"); err != nil {
return c.JSON(http.StatusInternalServerError, "Problems with generation of export file.")
}
if key, err := cfg.Section("test_section").NewKey("name", "value"); err != nil {
return c.JSON(http.StatusInternalServerError, "Problems with generation of export file.")
}
cfg.SaveTo("export.ini")
defer os.Remove("export.ini")
return c.Attachment("export.ini", "export.ini")
}
Но вопрос, возможно ли не создавать физический файл export.ini и после не удалять его? Возможно ли как-то вернуть содержимое на лету?
Спасибо
Комментарии:
1. Да, конечно, если ваш cfg может записывать себя в io. Писатель. Поскольку вы не объяснили, что
ini
такое, мы не можем вам помочь.2. Ini прост «gopkg.in/ini.v1 » библиотека
3. Так что просто используйте godoc.org/gopkg.in/ini.v1#File . writeTo . Всегда читайте полный документ пакета.
Ответ №1:
Я думаю, вам нужно отправить большой двоичный объект.
Отправить большой двоичный объект Context#Blob(code int, ContentType string, b []байт) может использоваться для отправки произвольного ответа данных с предоставленным типом содержимого и кодом состояния.
Пример
func(c echo.Context) (err error) {
data := []byte(`0306703,0035866,NO_ACTION,06/19/2006
0086003,"0005866",UPDATED,06/19/2006`)
return c.Blob(http.StatusOK, "text/csv", data)
}
Вы можете использовать функцию writeTo, чтобы сначала записать cfg
содержимое в io.Writer
, а затем это содержимое можно использовать вместо data
(в предыдущем примере кода. Также не забудьте изменить тип содержимого на text/plain
)