123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package agent
- import (
- "errors"
- "net/http"
- "strconv"
- "wechat-api/internal/types"
- "github.com/zeromicro/go-zero/rest/httpx"
- "wechat-api/internal/logic/agent"
- "wechat-api/internal/svc"
- )
- const (
- defaultMultipartMemory = 32 << 20 // 32 MB
- )
- // swagger:route post /agent/data/upload agent UploadAgentData
- //
- // upload agent data | 上传data
- //
- // upload agent data | 上传data
- //
- // Responses:
- // 200: BaseDataInfo
- func UploadAgentDataHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- if err := r.ParseMultipartForm(defaultMultipartMemory); err != nil {
- httpx.Error(w, err)
- return
- }
- l := agent.NewUploadAgentDataLogic(r.Context(), svcCtx)
- file, header, err := r.FormFile("file")
- agentIds, ok := r.Form["agentId"]
- if err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
- if !ok || len(agentIds) != 1 {
- httpx.ErrorCtx(r.Context(), w, errors.New("agentId cannot be null"))
- return
- }
- if file == nil {
- httpx.ErrorCtx(r.Context(), w, errors.New("upload file cannot be null"))
- return
- }
- //l.Logger.Infof("header=%+v size=%d filename=%v\n", header.Header, header.Size, header.Filename)
- if header.Header.Get("Content-Type") != "text/csv" {
- httpx.ErrorCtx(r.Context(), w, errors.New("file format must be csv"))
- return
- }
- agentId, _ := strconv.Atoi(agentIds[0])
- var req types.UploadDataReq
- if err := httpx.Parse(r, &req, true); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
- resp, err := l.UploadAgentData(&req, file, uint64(agentId))
- // 删除临时文件
- _ = r.MultipartForm.RemoveAll()
- if err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
- }
|