微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法上传brotli预压缩的Json

如何解决无法上传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 举报,一经查实,本站将立刻删除。