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

如何实现文件经Gzip压缩转Base64及逆向还原(无临时文件)

PowerShell无临时文件实现Gzip压缩+Base64编码/解码方案

一、文件→Gzip压缩→Base64编码→输出Base64文件

以下代码直接在内存中完成压缩与编码,无需生成临时Gzip文件:

# 配置文件路径
$inputFilePath = "C:\your\input\file.path"
$outputBase64Path = "C:\your\output\base64.file"

# 读取原文件字节
$rawBytes = [System.IO.File]::ReadAllBytes($inputFilePath)

# 内存中执行Gzip压缩
$compressedStream = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream($compressedStream, [System.IO.Compression.CompressionMode]::Compress)
$gzipStream.Write($rawBytes, 0, $rawBytes.Length)
$gzipStream.Close()

# 将压缩字节转为Base64字符串并写入文件
$base64Content = [System.Convert]::ToBase64String($compressedStream.ToArray())
[System.IO.File]::WriteAllText($outputBase64Path, $base64Content)

二、Base64文件→解码→Gzip解压→还原原文件

对应解码解压流程,同样全程在内存处理:

# 配置文件路径
$inputBase64Path = "C:\your\input\base64.file"
$outputFilePath = "C:\your\output\restored.file"

# 读取Base64内容并解码为压缩字节
$base64Content = [System.IO.File]::ReadAllText($inputBase64Path)
$compressedBytes = [System.Convert]::FromBase64String($base64Content)

# 内存中执行Gzip解压
$compressedStream = New-Object System.IO.MemoryStream($compressedBytes)
$decompressedStream = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream($compressedStream, [System.IO.Compression.CompressionMode]::Decompress)
$gzipStream.CopyTo($decompressedStream)
$gzipStream.Close()

# 将解压后的字节写入原文件
[System.IO.File]::WriteAllBytes($outputFilePath, $decompressedStream.ToArray())

问题说明

你之前遇到的体积增大20%、解压失败问题,大概率是错误地将压缩后的字节流转换为字符串(比如用[System.Text.Encoding]::UTF8.GetString())再做Base64编码——这种转换会破坏二进制数据,导致体积膨胀且解压失败。上述方案直接对字节数组进行Base64编解码,全程保持二进制数据完整性,同时用内存流替代临时文件,完全符合需求。

内容的提问来源于stack exchange,提问作者PlayLORD-SysOp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:27