我為我的待辦事項串列應用程式創建了一個 CSV 匯出功能。該函式正在運行,處理程式正在回傳一個寫入檔案,但我在 Gin 框架的控制臺中得到了一個奇怪的恐慌:
http: 寫了超過宣告的Content-Length
這是至關重要的事情嗎?我該如何解決這種恐慌。
這是我的功能:
func (r *Repository) CSVExport() (*os.File, error) {
tasks, err := r.getAllTasks()
if err != nil {
return nil, err
}
file, err := os.Create("tasks.csv")
if err != nil {
return nil, err
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
var taskNameList []string
for _, task := range tasks {
taskNameList = append(taskNameList, task.Text)
}
err = writer.Write(taskNameList)
if err != nil {
return nil, err
}
return file, nil
}
這是處理程式:
func CSVExport(data model.ListOperations) gin.HandlerFunc {
return func(c *gin.Context) {
tasks, err := data.CSVExport()
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Task"})
}
c.FileAttachment("./tasks.csv", "tasks.csv")
c.Writer.Header().Set("attachment", "filename=tasks.csv")
c.JSON(200, tasks)
}
}
uj5u.com熱心網友回復:
您的代碼有一些錯誤:
- 您需要回傳錯誤
- 使用 fileAttachment 回傳檔案后,您無法回傳 JSON(它已經完成了這些作業)
func CSVExport(data model.ListOperations) gin.HandlerFunc {
return func(c *gin.Context) {
tasks, err := data.CSVExport()
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Task"})
return //stop it on error
}
c.FileAttachment("./tasks.csv", "tasks.csv")
c.Writer.Header().Set("attachment", "filename=tasks.csv")
//c.JSON(200, tasks) not need the fileAttachement func do it
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480238.html
標籤:去
