EasyGBS是TSINGSEE青犀視訊研發的可接入國标GB28181協定的視訊平台,經過多年的沉澱和不斷的優化,EasyGBS目前已經适應了很多場景下的視訊監控可視化搭建,并且能夠提供豐富的二次接口進行開發。
為了友善EasyGBS的日常運維和現場部署,需要使用者和運維人員能夠通過簡單的方式,批量的配置EasyGBS背景的接入通道配置。并且能夠随時了解通道配置的具體情況,是以在前端提供一個通道資訊的一鍵導入功能。
首先設定一個固定的通道導入資訊模闆:
裝置資訊導入模闆:func (h *APIHandler) ImportChannelInfo(c *gin.Context) {
file, err := c.FormFile("file")
if err != nil {
err = fmt.Errorf("擷取上傳檔案錯誤, %v", err)
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error())
return
}
ext := filepath.Ext(file.Filename)
if ext != ".xlsx" {
err = fmt.Errorf("上傳檔案格式錯誤, %v", err)
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error())
return
}
tmp := "tmp.xlsx"
f, err := os.Create(tmp)
if err != nil {
err = fmt.Errorf("建立檔案失敗, %v", err)
c.AbortWithStatusJSON(http.StatusInternalServerError, err.Error())
return
}
err = c.SaveUploadedFile(file, tmp)
if err != nil {
err = fmt.Errorf("儲存上傳檔案錯誤, %v", err)
c.AbortWithStatusJSON(http.StatusInternalServerError, err.Error())
return
}
xlFile, e := xlsx.OpenFile(tmp)
if e != nil {
err = fmt.Errorf("xlsx open error, %v", e)
c.AbortWithStatusJSON(http.StatusInternalServerError, err.Error())
return
}
defer func() {
f.Close()
os.RemoveAll(tmp)
}()
err = importInfo(xlFile)
if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, err.Error())
return
}
c.AbortWithStatusJSON(http.StatusOK, "ok")
return
}