可以将golang通道绑定到模板中
发布时间:2020-12-16 09:23:20 所属栏目:大数据 来源:网络整理
导读:我有这样的go模板(upload.tmpl.html): htmlbody div class="container" ul licurrent fileName : {{ .fileName}} /li /ul /body/html 一个处理程序uploadHandler.go with func UploadHandler(c *gin.Context) { file,header,err := c.Request.FormFile("fil
我有这样的go模板(upload.tmpl.html):
<html> <body> <div class="container"> <ul> <li>current fileName : {{ .fileName}} </li> </ul> </body> </html> 一个处理程序uploadHandler.go with func UploadHandler(c *gin.Context) { file,header,err := c.Request.FormFile("file-upload") if err != nil { log.Fatal("Erreur dans la récupération de fichier") } //... fileName := make(chan string) go ReadCsvFile(bytes,fileName) go func() { for { log.Info(<-fileName) } }() c.HTML(http.StatusOK,"upload.tmpl.html",gin.H{ "fileName": <-fileName,}) } 和ReadCsvFile()方法一样: func ReadCsvFile(bytesCSV []byte,fileName chan string) { r := bytes.NewReader(bytesCSV) reader := csv.NewReader(r) reader.Comma = ';' records,err := reader.ReadAll() if err != nil { fmt.Println("Error:",err) return } db,_ := databaseApp.OpenDatabase() defer db.Close() for _,record := range records { fileName <- record[0] product := &em.Product{ Name: record[0],//... } db.Create(product) } fileName <- "done" } 我尝试在模板中显示每行的当前fileName,但是可以将通道绑定到模板中吗?因为这样页面不再加载. 解决方法
使用Websockets.这里有些例子:
HTML / JavaScript的: <script> var ws= new WebSocket("ws://yoursite.com"); ws.onmessage = function (event) { console.log(event.data); // $('#your-element').html(event.data); } </script> 去Websockets: func websocketSenderHandler(conn *websocket.Conn){ for { msg := <- globalChannel conn.WriteMessage(websocket.TextMessage,msg) } } Go中的更多Websockets:golang.org/x/net/websocket 其他例子:https://github.com/golang-samples/websocket (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |