我正在尝试将整个目录上传到服务器。它适用于小目录,但有 100 多张图片,它返回“许多打开的文件”错误。我在读取文件后立即关闭该文件。知道如何解决这个问题吗?


这是我的代码


    func uploadDir(path string) error {

    dir, err := os.Open(path)

    if err != nil {

        return err

    }


    files, err := dir.Readdirnames(-1)

    if err != nil {

        return err

    }

    dir.Close()


    errChan := make(chan error)

    resChan := make(chan *client.PutResult)

    remaining := len(files)

    for _, file := range files {

        file := file

        go func() {

            file, err := os.Open(path + "/" + file)

            if err != nil {

                errChan <- err

            }

            c := client.NewClient(os.Getenv("DROPS_SERVER"))

            res, err := c.Upload(client.NewUploadHandleFromReader(file))

            file.Close()

            if err != nil {

                errChan <- err

            }

            resChan <- res

        }()

    }


    for {

        select {

        case res := <-resChan:

            log.Println(res)

            remaining--

        case err := <-errChan:

            if err != nil {

                return err

            }

        }

        if remaining == 0 {

            break

        }

    }

    return nil

}