天天看點

EasyGBS批量接入裝置及導入通道的實作過程

EasyGBS是TSINGSEE青犀視訊研發的可接入國标GB28181協定的視訊平台,經過多年的沉澱和不斷的優化,EasyGBS目前已經适應了很多場景下的視訊監控可視化搭建,并且能夠提供豐富的二次接口進行開發。

EasyGBS批量接入裝置及導入通道的實作過程

為了友善EasyGBS的日常運維和現場部署,需要使用者和運維人員能夠通過簡單的方式,批量的配置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
}