Мало кода, но на первый взгляд это не паника при записи
header
, а error при попытке
tw.Flush()
, который вы не проверили. После записи
header
, нужно залить собственно данные
tw.Write(data []byte)
и уже потом делать
tw.Flush()
. Вы в
header
пообещали залить данные и не залили. Кажется должно быть что то вроде
if err := tw.WriteHeader(hdr); err != nil {
return err
}
if n, err := tw.Write(content); err != nil { //вот это не видно как вы сделали
return err
}
if tw.Flush(); err != nil{ //и нужно проверять все ошибки
return err
}