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

如何在PowerShell中为Base64转换添加压缩功能?

PowerShell实现文件与Base64的无临时文件压缩互转

针对二进制文件(如PDF、图片等),直接基于文本的压缩逻辑会导致文件损坏,以下是适配任意文件类型的无临时文件转换方案,全程通过内存流处理,结合GZip压缩减少Base64的存储体积。

1. 文件 → 压缩 → Base64

该脚本读取文件的原始字节流,通过GZip压缩后直接转换为Base64字符串并保存:

# 输入文件路径
$inputFilePath = "test.pdf"
# 输出Base64文件路径
$outputB64Path = "test_compressed.b64"

# 读取文件字节,初始化内存流
$fileBytes = [System.IO.File]::ReadAllBytes($inputFilePath)
$memoryStream = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GZipStream($memoryStream, [System.IO.Compression.CompressionMode]::Compress)

# 将文件字节写入压缩流
$gzipStream.Write($fileBytes, 0, $fileBytes.Length)
$gzipStream.Close()

# 将压缩后的字节转Base64并保存
[System.Convert]::ToBase64String($memoryStream.ToArray()) | Out-File -FilePath $outputB64Path -Encoding ASCII
$memoryStream.Close()

2. Base64 → 解压 → 文件

该脚本读取Base64字符串,解码为压缩字节流后解压,最终写入目标文件:

# 输入Base64文件路径
$inputB64Path = "test_compressed.b64"
# 输出文件路径
$outputFilePath = "test_restored.pdf"

# 读取Base64字符串并解码为字节
$b64String = Get-Content -Path $inputB64Path -Raw
$compressedBytes = [System.Convert]::FromBase64String($b64String)

# 初始化内存流写入压缩字节
$memoryStream = New-Object System.IO.MemoryStream
$memoryStream.Write($compressedBytes, 0, $compressedBytes.Length)
$memoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null

# 解压字节流并读取原始文件字节
$gzipStream = New-Object System.IO.Compression.GZipStream($memoryStream, [System.IO.Compression.CompressionMode]::Decompress)
$outputStream = New-Object System.IO.MemoryStream
$gzipStream.CopyTo($outputStream)
$gzipStream.Close()

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

关键说明

  • 全程使用MemoryStream处理数据,无需创建任何临时文件
  • 直接操作字节流而非文本流,避免二进制文件因编码转换损坏
  • 使用GZip压缩可有效降低Base64字符串的长度,对比未压缩的Base64通常能节省30%-70%的存储空间(取决于文件类型)

内容的提问来源于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:14:53