通过curl上传文件返回多部分:NextPart:EOF错误

I'm a newer to Go and Iris, and I'm trying to set up an API server. I want to upload a file by CURL for a test. But when i use ctx.FormFile("data") or ctx.UploadFormFile("./uploads") to upload a file, it will returns multipart: NextPart: EOF. How can I solve this problem? Thanks!

curl:

curl -i -v -F 'data=@\"test.txt\"' "http://localhost:8080/upload_file"

main.go:

package main

import (
    "github.com/kataras/iris"
    "github.com/kataras/iris/middleware/logger"
    "github.com/kataras/iris/middleware/recover"
    "github.com/kataras/iris/mvc"

    "./controllers"
)

func main() {
    app := iris.New()
    app.Use(recover.New())
    app.Use(logger.New())
    filesController := new(controllers.FilesController)
    filesApp := mvc.New(app)
    filesApp.Handle(filesController)
    app.Run(iris.Addr(":8080"))
}

filesController.go:

package controllers

import (
    "fmt"

    "github.com/kataras/iris"
    "github.com/kataras/iris/mvc"
)
type FilesController struct {}

func (c *FilesController) BeforeActivation(b mvc.BeforeActivation) {
    middleware := func(ctx iris.Context) {
        ctx.Application().Logger()
        ctx.Next()
    }
    b.Handle("POST", "/upload_file", "UploadFile", middleware)
}

func (c *FilesController) UploadFile(ctx iris.Context) {
    // ctx.FormFile("data")
    len, err := ctx.UploadFormFiles("./uploads")
    fmt.Println(len, err)
}

execute curl renturns

* Expire in 0 ms for 6 (transfer 0x8dd060)
* Expire in 1 ms for 1 (transfer 0x8dd060)
* Expire in 3 ms for 1 (transfer 0x8dd060)
* Expire in 2 ms for 1 (transfer 0x8dd060)
* Expire in 7 ms for 1 (transfer 0x8dd060)
* Expire in 10 ms for 1 (transfer 0x8dd060)
* Expire in 4 ms for 1 (transfer 0x8dd060)
* Expire in 15 ms for 1 (transfer 0x8dd060)
* Expire in 50 ms for 1 (transfer 0x8dd060)
* Expire in 50 ms for 1 (transfer 0x8dd060)
*   Trying ::1...
* TCP_NODELAY set
* Expire in 149969 ms for 3 (transfer 0x8dd060)
* Expire in 200 ms for 4 (transfer 0x8dd060)
* Connected to localhost (::1) port 8080 (#0)
> POST /upload_files HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.0
> Accept: */*
> Content-Length: 221
> Content-Type: multipart/form-data; boundary=------------------------7f0a822525
fc9e4c
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Set-Cookie: demo_app_cookie=425c2c0b-852d-49ea-967a-09214bcdec18; Path=/; Expi
res=Sun, 12 Jun 2044 03:48:13 GMT; Max-Age=784591442; HttpOnly
Set-Cookie: demo_app_cookie=425c2c0b-852d-49ea-967a-09214bcdec18; Path=/; Expire
s=Sun, 12 Jun 2044 03:48:13 GMT; Max-Age=784591442; HttpOnly
< Date: Fri, 02 Aug 2019 05:44:10 GMT
Date: Fri, 02 Aug 2019 05:44:10 GMT
< Content-Length: 0
Content-Length: 0

<
* Connection #0 to host localhost left intact

UploadFile function returns

0 multipart: NextPart: EOF
[INFO] 2019/08/02 11:49 200 36.002ms ::1 POST /upload_file