yinbangzhong
2024-06-12 eb1d2e16e0ec4721ba48d101ced1e4b994b463fd
multi files upload
4个文件已修改
97 ■■■■ 已修改文件
controllers/audio.go 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/audio.go
@@ -6,6 +6,7 @@
    "github.com/gin-gonic/gin"
    "gorm.io/gorm"
    "io"
    "mime/multipart"
    "os"
    "path"
    "speechAnalysis/constvar"
@@ -27,36 +28,34 @@
// @Tags      音频
// @Summary   上传音频
// @Produce   application/json
// @Param file formData file true "音频文件"
// @Param file formData file false "音频文件"
// @Param files formData []file false "多个音频文件"
// @Success   200 {object} util.Response "成功"
// @Router    /api-sa/v1/audio/upload [post]
func (slf AudioCtl) Upload(c *gin.Context) {
    _, header, err := c.Request.FormFile("file")
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, err.Error())
        return
    }
    f := func(header *multipart.FileHeader) error {
        logFormat := "%s,%s   "
    filename := path.Base(header.Filename)
    arr := strings.Split(filename, "_")
    if len(arr) != 6 {
        util.ResponseFormat(c, code.RequestParamError, "文件名称错误")
        return
            //util.ResponseFormat(c, code.RequestParamError, "文件名称错误")
            return errors.New(fmt.Sprintf(logFormat, filename, "文件名称错误"))
    }
    _, err = models.NewAudioSearch().SetName(filename).First()
        _, err := models.NewAudioSearch().SetName(filename).First()
    if err != gorm.ErrRecordNotFound {
        util.ResponseFormat(c, code.RequestParamError, "重复上传")
        return
            //util.ResponseFormat(c, code.RequestParamError, "重复上传")
            return errors.New(fmt.Sprintf(logFormat, filename, "重复上传"))
    }
    oss := upload.NewOss()
    filePath, filename, uploadErr := oss.UploadFile(header)
    if uploadErr != nil {
        logx.Errorf("upload audio err: %v", err)
        util.ResponseFormat(c, code.RequestParamError, "上传失败")
        return
            //util.ResponseFormat(c, code.RequestParamError, "上传失败")
            return errors.New(fmt.Sprintf(logFormat, filename, "上传失败"))
    }
    timeStr := arr[4] + strings.Split(arr[5], ".")[0]
@@ -64,8 +63,8 @@
    t, err := time.ParseInLocation("20060102150405", timeStr, time.Local)
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "时间格式不对")
        return
            //util.ResponseFormat(c, code.RequestParamError, "时间格式不对")
            return errors.New(fmt.Sprintf(logFormat, filename, "上传失败"))
    }
    audio := &models.Audio{
@@ -82,8 +81,8 @@
    }
    if err = models.NewAudioSearch().Create(audio); err != nil {
        util.ResponseFormat(c, code.SaveFail, "上传失败")
        return
            //util.ResponseFormat(c, code.SaveFail, "上传失败")
            return errors.New(fmt.Sprintf(logFormat, filename, "上传失败"))
    }
    go func() {
@@ -110,8 +109,33 @@
        }
    }()
        return nil
    }
    var headers []*multipart.FileHeader
    _, header, _ := c.Request.FormFile("file")
    if header != nil {
        headers = append(headers, header)
    }
    if len(c.Request.MultipartForm.File["files"]) > 0 {
        headers = c.Request.MultipartForm.File["files"]
    }
    var errs []error
    for _, h := range headers {
        if e := f(h); e != nil {
            errs = append(errs, e)
        }
    }
    if len(errs) > 0 {
        var r strings.Builder
        for _, e := range errs {
            r.WriteString(e.Error())
        }
        util.ResponseFormat(c, code.RequestParamError, r.String())
        return
    } else {
    util.ResponseFormat(c, code.Success, "添加成功")
        return
    }
}
func (slf AudioCtl) ParamsCheck(filename string) (err error) {
docs/docs.go
@@ -1,5 +1,4 @@
// Code generated by swaggo/swag. DO NOT EDIT.
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
@@ -470,8 +469,17 @@
                        "type": "file",
                        "description": "音频文件",
                        "name": "file",
                        "in": "formData",
                        "required": true
                        "in": "formData"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "file"
                        },
                        "collectionFormat": "csv",
                        "description": "多个音频文件",
                        "name": "files",
                        "in": "formData"
                    }
                ],
                "responses": {
docs/swagger.json
@@ -458,8 +458,17 @@
                        "type": "file",
                        "description": "音频文件",
                        "name": "file",
                        "in": "formData",
                        "required": true
                        "in": "formData"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "file"
                        },
                        "collectionFormat": "csv",
                        "description": "多个音频文件",
                        "name": "files",
                        "in": "formData"
                    }
                ],
                "responses": {
docs/swagger.yaml
@@ -487,8 +487,14 @@
      - description: 音频文件
        in: formData
        name: file
        required: true
        type: file
      - collectionFormat: csv
        description: 多个音频文件
        in: formData
        items:
          type: file
        name: files
        type: array
      produces:
      - application/json
      responses: