如何在 C# 中将文件编码为 base64 以及如何检索它?
例如,将 zip 文件编码为 base64 并再次检索它。
您最好的选择是使用ToBase64Transform和FromBase64Transform加密接口。
此代码示例背后的基本要点是,您使用 From/ToBase64Transform 转换类和标准加密流来处理将传入数据转换为 base64 或从 base64 转换的繁重工作。在该ConvertToBase64
方法中,您会注意到它使用“ToBase64”加密流包装了目标文件流,然后我们将源流中的内容复制到 base64 加密流。解码时也一样,只是稍微向后应用。我们将源流包装在“FromBase64”中以在数据进入时对其进行解码,并使用它将其复制到目标流。
一个非常粗糙(且未经测试的示例)将类似于:
using System;
using System.IO;
using System.Security.Cryptography;
void ConvertToBase64(string sourceFileName, string destFileName) {
FileStream source = new FileStream(sourceFileName, FileMode.Open,
FileAccess.Read, FileShare.Read);
FileStream dest = new FileStream(destFileName, FileMode.Create,
FileAccess.Write, FileShare.None);
ICryptoTransform base64 = new ToBase64Transform();
CryptoStream cryptoStream = new CryptoStream(dest, base64, CryptoMode.Write);
using (source) using (dest) using (base64) using (cryptoStream) {
source.CopyTo(cryptoStream);
cryptoStream.FlushFinalBlock();
}
}
void ConvertFromBase64(string sourceFileName, string destFileName) {
FileStream source = new FileStream(sourceFileName, FileMode.Open,
FileAccess.Read, FileShare.Read);
ICryptoTransform base64 = new FromBase64Transform();
CryptoStream cryptoStream = new CryptoStream(source, base64, CryptoMode.Read);
FileStream dest = new FileStream(destFileName, FileMode.Create,
FileAccess.Write, FileShare.None);
using (source) using (base64) using (cryptoStream) using (dest) {
cryptoStream.CopyTo(dest);
}
}