加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

可以将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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读