如何解决无法上传brotli预压缩的Json
我对 c# 流了解甚少。我正在尝试将 brotli 压缩的 json 上传到 azure 存储中。
private async Task UploadJSONAsync(BlobClient blob,object serializeObject,CancellationToken cancellationToken)
{
var json = JsonConvert.SerializeObject(serializeObject);
using (var sourceStream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
using (var destStream = new MemoryStream())
using (var brotliStreamCompressor = new brotliStream(destStream,CompressionLevel.Optimal,false))
{
sourceStream.copyTo(brotliStreamCompressor);
//brotliStreamCompressor.Close(); // Closes the stream,can't read from a closed stream.
await blob.DeleteIfExistsAsync();
await blob.UploadAsync(destStream,cancellationToken);
//brotliStreamCompressor.Close(); // destStream has zero bytes
}
}
}
我确信我缺乏直播知识会阻止它工作。
解决方法
为了读取流,我必须将其位置设置回零。
private async Task UploadJSONAsync(BlobClient blob,object serializeObject,CancellationToken cancellationToken)
{
var json = JsonConvert.SerializeObject(serializeObject);
using (var sourceStream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
using (var destStream = new MemoryStream())
using (var brotliStreamCompressor = new BrotliStream(destStream,CompressionLevel.Optimal,false))
{
sourceStream.CopyTo(brotliStreamCompressor);
brotliStreamCompressor.Close();
destStream.Position = 0;
await blob.DeleteIfExistsAsync();
await blob.UploadAsync(destStream,cancellationToken);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。