在上傳到 Azure Blob 存盤之前,我使用以下代碼對資料進行加密和壓縮
//calling the API for Data
var response = httpclient.Send(webRequest);
//Compressing
using MemoryStream compressedMemoryStream = new MemoryStream();
using (Stream bodyStream = response.Content.ReadAsStream())
{
using (GZipStream compressionStream = new GZipStream(compressedMemoryStream,
CompressionMode.Compress, true))
{
await bodyStream.CopyToAsync(compressionStream);
}
}
compressedMemoryStream.Position = 0;
//Uploading to blob
//options includes the details about encrypting
blob.UploadFromStream(compressedMemoryStream, compressedMemoryStream.Length, null, options, null);
此資料已成功上傳到 Azure Blob
但是當我嘗試下載 -> 解密 -> 解壓時,它給了我空資料
下面的代碼
var compressedStream = new MemoryStream();
//Download and decrypt Blob data to MemoryStream
dblob.DownloadToStream(compressedStream, null, doptions, null);
//Decompress Code
var bigStream = new GZipStream(compressedStream, CompressionMode.Decompress);
var bigStreamOut = new MemoryStream();
bigStream.CopyTo(bigStreamOut);
output = Encoding.UTF8.GetString(bigStreamOut.ToArray());
// “output is empty".
Console.WriteLine(output);
uj5u.com熱心網友回復:
您需要將位置設定為 0。以下代碼應該可以作業:
var compressedStream = new MemoryStream();
//Download and decrypt Blob data to MemoryStream
dblob.DownloadToStream(compressedStream, null, doptions, null);
compressedStream.Position = 0;
//Decompress Code
var bigStream = new GZipStream(compressedStream, CompressionMode.Decompress);
var bigStreamOut = new MemoryStream();
bigStream.CopyTo(bigStreamOut);
output = Encoding.UTF8.GetString(bigStreamOut.ToArray());
// “output is empty".
Console.WriteLine(output);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348974.html
