2 回答
TA贡献1831条经验 获得超4个赞
我相信您应该在从底层缓冲区获取字节之前关闭 gzip 编写器。
func (f *File) Zip() error {
buff := bytes.NewBuffer(nil)
writer := gzip.NewWriter(buff)
defer writer.Close()
_, err := f.Body.WriteTo(writer)
if err != nil {
return err
}
writer.Close() // I have added this line
f.Body = bytes.NewReader(buff.Bytes())
f.Name = fmt.Sprintf("%s.gz", f.Name)
return nil
}
TA贡献1943条经验 获得超7个赞
根据文档,gzip.NewReader
_If r does not also implement io.ByteReader, the decompressor may read more data than necessary from r.
对于 bytes.Reader,A Reader implements the io.Reader, io.ReaderAt, io.WriterTo, io.Seeker, io.ByteScanner, and io.RuneScanner interfaces by reading from a byte slice.
问题可能在于bytes.Reader
没有实现io.ByteReader
。
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报