将流异步写入Azure BlobStorage

5

我正在将我的C#代码重写,使用Azure Blob存储代替文件系统。目前为止,普通文件操作的代码重写没有问题。但是我有一些代码使用了来自流的异步写入:

        using (var stream = await Request.Content.ReadAsStreamAsync())
        {
            FileStream fileStream = new FileStream(@"c:\test.txt", FileMode.Create, FileAccess.Write, FileShare.None);

            await stream.CopyToAsync(fileStream).ContinueWith(
             (copyTask) =>
             {
                 fileStream.Close();
             });
        }

我需要将上述内容更改为使用Azure CloudBlockBlob或CloudBlobStream,但找不到一种声明流对象的方法,使得copyToAsync可以写入其中。


1
可能是从流直接异步上传到Azure的重复问题。 - Bernard Vander Beken
1个回答

8

您需要在CloudBlockBlob上使用UploadFromStreamAsync方法。以下是一个示例代码(我尚未尝试运行此代码):

        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var blobClient = account.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference("container-name");
        var blob = container.GetBlockBlobReference("blob-name");
        using (var stream = await Request.Content.ReadAsStreamAsync())
        {
            stream.Position = 0;
            await blob.UploadFromStreamAsync(stream);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接