Не могу записать несколько файлов в Zip-файл - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь записать файл CSV и изображение в zipfile. Изображения записываются, и создается файл CSV, но он пустой (размер 0 байт). Вот самый простой код, который я мог воспроизвести:

func PipeZIP() error {
    pipeReader, pipeWriter := io.Pipe()
    zipWriter := zip.NewWriter(pipeWriter)

    wg := sync.WaitGroup{}
    wg.Add(2)

    go func() {
        defer func() {
            wg.Done()
            zipWriter.Close()
            pipeWriter.Close()
        }()

        f1, err := zipWriter.Create("test")
        if err != nil {
            fmt.Println(err)
        }

        f2, err := zipWriter.Create("test.jpg")
        object, err := minioClient.GetObject("test", "some_key", minio.GetObjectOptions{})
        if err != nil {
            fmt.Println("err", err)
        }

        if _, err := io.Copy(f2, object); err != nil {
            fmt.Println(err)
        }

        csvWriter := csv.NewWriter(f1)
        csvWriter.Write([]string{"hello", "there", "world"})

        csvWriter.Flush()

    }()

    go func() {
        defer wg.Done()

        _, err := minioClient.PutObject("test", "somerandomname.zip", pipeReader, -1, minio.PutObjectOptions{})
        if err != nil {
            fmt.Println(err)
        }
    }()

    wg.Wait()

    return nil
}

Если я закомментирую часть изображения, файл CSV будет записан. Если я оставлю это, изображения будут записаны, но теперь файл CSV пуст.

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...