uploadfilehander.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // 文件上传模块
  2. // 秒寻科技
  3. // zt 2024-11-07
  4. package uploadfilehander
  5. import (
  6. "bytes"
  7. "io"
  8. "ipsomc/core/gin/resp"
  9. "ipsomc/module/upgrade"
  10. "ipsomc/module/uploadfile/uploadfileapi"
  11. "ipsomc/module/uploadfile/uploadfilemodel"
  12. "strconv"
  13. "github.com/gin-gonic/gin"
  14. )
  15. type UploadFileHan struct {
  16. upgradeApi upgrade.Upgrade
  17. uploadFileApi uploadfileapi.UploadFileApi
  18. }
  19. // 上传升级文件
  20. func (obj *UploadFileHan) UploadUpgradeFileHan(c *gin.Context) {
  21. dataModel := new(uploadfilemodel.UploadFileParam)
  22. // 1、从上传文件中提取data参数(JSON字符串)
  23. projectIdStr := c.Request.FormValue("project_id") //项目编号
  24. btsIdStr := c.Request.FormValue("bts_id") //基站编号
  25. ProjectID, _ := strconv.Atoi(projectIdStr)
  26. BtsID, _ := strconv.Atoi(btsIdStr)
  27. if ProjectID <= 0 || BtsID <= 0 {
  28. resp.RespFail(c, "升级参数有误")
  29. return
  30. }
  31. dataModel.ProjectID = ProjectID
  32. dataModel.BtsID = BtsID
  33. ////2、从上传文件中提取文件
  34. file, err := c.FormFile("file")
  35. if err != nil {
  36. resp.RespFail(c, "提取数据错误")
  37. return
  38. }
  39. // 打开文件以读取其内容
  40. f, err := file.Open()
  41. if err != nil {
  42. resp.RespFail(c, "打开文件错误")
  43. return
  44. }
  45. defer f.Close()
  46. // 创建一个缓冲区来存储文件内容
  47. var buf bytes.Buffer
  48. _, err = io.Copy(&buf, f)
  49. if err != nil {
  50. resp.RespFail(c, "拷贝文件错误")
  51. return
  52. }
  53. fileLen := buf.Len()
  54. println(fileLen)
  55. //把数据送到升级模块
  56. if err := obj.upgradeApi.UpgradeReceiveFile(dataModel, buf.Bytes(), uint32(buf.Len())); err != nil {
  57. resp.RespFail(c, "远程升级失败")
  58. }
  59. resp.RespOk(c)
  60. }
  61. // 获得升级状态
  62. func (obj *UploadFileHan) GetUpgradeStatusHan(c *gin.Context) {
  63. dataMode := new(uploadfilemodel.UploadFileResp)
  64. resp.RespData(c, dataMode)
  65. }
  66. // 创建web socket
  67. func (obj *UploadFileHan) CreateWebSocketHan(c *gin.Context) {
  68. //创建web socket
  69. if err := obj.uploadFileApi.CreateWebSocketApi(c); err != nil {
  70. resp.RespFail(c, err.Error())
  71. return
  72. }
  73. //响应成功
  74. resp.RespOk(c)
  75. }