我正在 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)
})
- 1 回答
- 0 關注
- 76 瀏覽
添加回答
舉報
0/150
提交
取消