You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang实现字节切片压缩:与指定解压缩方案逆向需求

Go实现字节切片压缩为字节切片的函数

你需要的是与指定解压缩功能相反的实现:将原始[]byte压缩为zip格式的[]byte,用于后续作为multipart表单数据上传。以下是符合要求的ZipBytes函数实现:

import (
	"archive/zip"
	"bytes"
	"io"
)

func ZipBytes(unzippedBytes []byte) ([]byte, error) {
	// 创建字节缓冲区存储压缩结果
	var buf bytes.Buffer

	// 初始化Zip写入器
	zipWriter := zip.NewWriter(&buf)

	// 创建Zip包内的文件条目,文件名可按需修改
	fileEntry, err := zipWriter.Create("compressed_content")
	if err != nil {
		return nil, err
	}

	// 将原始字节切片写入Zip条目
	_, err = fileEntry.Write(unzippedBytes)
	if err != nil {
		return nil, err
	}

	// 关闭写入器,确保所有数据刷新到缓冲区
	if err := zipWriter.Close(); err != nil {
		return nil, err
	}

	return buf.Bytes(), nil
}

关键说明

  • 用bytes.Buffer做内存级存储,无需写入本地文件,适合直接用于网络上传场景
  • 必须调用zipWriter.Close(),否则会导致Zip包结构不完整,无法正常解压缩
  • 示例中使用compressed_content作为Zip内的文件名,你可以根据业务需求修改为更合适的名称

扩展场景

如果需要同时压缩多个独立的字节切片(对应多个文件),可以在函数内多次调用zipWriter.Create()创建不同的文件条目,分别写入对应数据即可。

内容的提问来源于stack exchange,提问作者Pramit Pakhira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:30:49