去如何响应csv文件?

我正在 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)


})


慕标5832272
浏览 83回答 1
1回答

繁华开满天机

如果要告诉浏览器 将响应显示为要下载的文件,则可以使用内容处置标头: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)})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go