csv/handler/file-handler.go

58 lines
1.4 KiB
Go
Raw Normal View History

2021-09-28 15:32:37 +00:00
package handler
import (
"encoding/csv"
"os"
2022-01-18 08:08:33 +00:00
"time"
2021-09-28 15:32:37 +00:00
"github.com/gin-gonic/gin"
)
2022-01-18 08:08:33 +00:00
// csv文件下载
2021-09-28 15:32:37 +00:00
func DownLoadFile(c *gin.Context) {
filepath := "./uploads/file.csv" //文件路径
file, err := os.OpenFile(filepath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) //文件打开
if err != nil {
panic(err)
}
defer file.Close()
WriterCsv := csv.NewWriter(file) //csv文件写入
// 写入的数据
str := []string{"xxs", "asfsa"}
err1 := WriterCsv.Write(str)
if err1 != nil {
panic(err)
}
// 刷新
WriterCsv.Flush()
c.Header("Content-Type", "application/octet-stream")
c.Header("Content-Disposition", "attachment; filename=\""+"file.csv"+"\"") //文件名传入数据流
c.Header("Content-Transfer-Encoding", "binary")
c.File(filepath) //文件路径
return
}
2022-01-18 08:08:33 +00:00
// 文件流传输
func DownLoadFileFlow(c *gin.Context) {
t := time.Now().Format("2006-01-02")
filename := "1.csv"
c.Header("Content-Type", "application/octet-stream")
c.Header("Content-Disposition", "attachment; filename=\""+t+filename+"\"")
c.Header("Content-Transfer-Encoding", "binary")
c.Header("Access-Control-Expose-Headers", "Content-Disposition")
WriterCsv := csv.NewWriter(c.Writer) //csv文件写入流
// 写入的数据
str := []string{"xxs", "asfsa"}
err := WriterCsv.Write(str)
if err != nil {
panic(err)
}
// 刷新
WriterCsv.Flush()
return
}