Я пытаюсь записать файл 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 пуст.
Любая помощь будет принята с благодарностью.