-2

我有 ECHO 框架,它应该根据请求返回文件,并且运行良好

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 并且之后不删除它?可以以某种方式即时返回内容吗?谢谢

4

1 回答 1

0

我认为您需要Send Blob

Send Blob Context#Blob(code int, contentType string, b []byte)可用于发送带有提供的内容类型和状态码的任意数据响应。

例子

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

于 2020-08-31T16:04:34.910 回答