为了账号安全,请及时绑定邮箱和手机立即绑定

去如何响应csv文件?

去如何响应csv文件?

Go
慕标5832272 2022-09-12 16:16:54
我正在 Go 中创建一个服务器,我想使用 CSV 文件进行响应。我写了以下内容,这不会导致浏览器下载CSV文件。如何提示浏览器下载 CSV 文件?import "github.com/gocarina/gocsv"type Test struct {    ID   int    Name string    Delete string}router.Get("/test", func(writer http.ResponseWriter, request *http.Request) {    writer.WriteHeader(http.StatusOK)    tests := []*Test{        {            ID:   1,            Name: "a",            Delete: "delete",        },        {            ID:   2,            Name: "b",            Delete: "delete",        },    }    w := multipart.NewWriter(writer)    ww, err := w.CreateFormFile("file.csv", "file.csv")    if err != nil {        logger.Error("CreateFormfile", zap.Error(err))    }    gocsv.Marshal(tests, ww)})
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

如果要告诉浏览器 将响应显示为要下载的文件,则可以使用内容处置标头:


rw.Header().Add("Content-Disposition", `attachment; filename="test.csv"`)

就输出CSV文档本身而言,我不确定您试图通过多部分编码进行响应来实现什么,但您应该将CSV文件直接封送到原始HTTP响应编写器中:


router.Get("/test", func(rw http.ResponseWriter, req *http.Request) {


        tests := []*Test{

            {

                ID:   1,

                Name: "a",

                Delete: "delete",

            },

            {

                ID:   2,

                Name: "b",

                Delete: "delete",

            },

        }


        gocsv.Marshal(tests, rw)


})


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信