【问题标题】:How to upload stream with Azure.Storage.Blobs如何使用 Azure.Storage.Blobs 上传流
【发布时间】:2020-09-28 11:07:15
【问题描述】:

我正在尝试将数据上传/存储到 azure blob。数据是从 xmlSerialize 对象生成的。由于结果可能很大,而且我的程序中不需要序列化输出,我想将数据直接流式传输到 blob 中。 这已通过 Microsoft.Azure.Storage.Blob 解决: uploading-datatable-to-azure-blob-storage 但我使用的是Azure.Storage.Blobs,因为微软推荐了它,而另一个已被替换。它还支持身份验证。

预览解决方案依赖于获取 blob 的流对象,以便序列化程序可以使用它。但我看不出有任何方法可以用新的 API 做同样的事情。我错过了什么吗?

【问题讨论】:

    标签: c# azure asp.net-core azure-blob-storage


    【解决方案1】:

    但我看不出有任何方法可以对新 API 做同样的事情。我失踪了吗 什么?

    你是对的。新 SDK 中不支持获取 blob 的流对象。您需要将数据转换为流,然后在BlobClientBlockBlobClient 上使用UploadUploadAsync 方法来上传blob。

    【讨论】:

    • “您需要将数据转换为流”是指将结果存储在 MemoryStream 中还是将其写入临时文件?
    • 存储在内存流中。
    • 或者,如果您愿意,可以将其保存在文件中。然后您可以分块读取文件并使用BlockBlobClient中提供的方法上传它们。
    • 通过来自 Microsoft.Azure.WebJobs 事件的 IBinder 是可能的。使用 (var sw = binder.Bind(new BlobAttribute(blobNameOut, FileAccess.Write))) 使用 (var writer = new StreamWriter(sw)) { await WriteMethod(streamReader, writer,cancellationToken);如果您知道是否可以使用我感兴趣的任何实现来实例化 IBinder :)
    【解决方案2】:

    https://stackoverflow.com/a/65395088/2589083查看答案

    新的 Azure.Storage.Blobs.Specialized.BlockBlobClient(System.Uri uri)

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 2021-01-30
      • 2021-02-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      相关资源
      最近更新 更多