upload.tmpl.html我有这样的go 模板 ( ):
<html>\n<body>\n <div class="container">\n <ul>\n <li>current fileName : {{ .fileName}} </li>\n </ul> \n</body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n\n处理程序uploadHandler.go与
func UploadHandler(c *gin.Context) {\n file, header, err := c.Request.FormFile("file-upload")\n if err != nil {\n log.Fatal("Erreur dans la r\xc3\xa9cup\xc3\xa9ration de fichier")\n }\n //...\n fileName := make(chan string)\n\n go ReadCsvFile(bytes, fileName)\n go func() {\n for {\n log.Info(<-fileName)\n }\n }()\n\n c.HTML(http.StatusOK, "upload.tmpl.html", gin.H{\n "fileName": <-fileName,\n })\n}\nRun Code Online (Sandbox Code Playgroud)\n\n和ReadCsvFile()这样的方法:
func ReadCsvFile(bytesCSV []byte, fileName chan string) {\n r := bytes.NewReader(bytesCSV)\n reader := csv.NewReader(r)\n reader.Comma = \';\'\n\n records, err := reader.ReadAll()\n\n if err != nil {\n fmt.Println("Error:", err)\n return\n }\n\n db, _ := databaseApp.OpenDatabase()\n defer db.Close()\n for _, record := range records {\n fileName <- record[0]\n product := &em.Product{\n Name: record[0],\n //...\n }\n db.Create(product)\n\n }\n fileName <- "done"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试显示模板中每一行的当前文件名,但是可以像这样将通道绑定到模板中吗?因为这样页面就不再加载了。
\n使用网络套接字。这里有些例子:
HTML/JavaScript:
<script>
var ws= new WebSocket("ws://yoursite.com");
ws.onmessage = function (event) {
console.log(event.data);
// $('#your-element').html(event.data);
}
</script>
Run Code Online (Sandbox Code Playgroud)
转到网络套接字:
func websocketSenderHandler(conn *websocket.Conn){
for {
msg := <- globalChannel
conn.WriteMessage(websocket.TextMessage, msg)
}
}
Run Code Online (Sandbox Code Playgroud)
Go 中的更多 Websocket:golang.org/x/net/websocket
其他示例: https: //github.com/golang-samples/websocket
| 归档时间: |
|
| 查看次数: |
912 次 |
| 最近记录: |