csv/handler/file-handler.go

58 lines
1.4 KiB
Go

package handler
import (
"encoding/csv"
"os"
"time"
"github.com/gin-gonic/gin"
)
// csv文件下载
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
}
// 文件流传输
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
}