簡體   English   中英

如何使用新的 Azure 存儲 SDK v12 打開可寫 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ 到新 Blob?

[英]How can I open a writeable stream to a new Blob using the new Azure Storage SDK v12?

我正在使用 Azure 存儲 SDK v12 並且我正在尋找一種方法來打開 stream 到特定 Blob,就像在以前的版本中一樣:

CloudBlobClient cloudBlobClient = account.CreateCloudBlobClient();

CloudBlobContainer container = cloudBlobClient.GetContainerReference("zipfiles");

var blob = container.GetBlockBlobReference(Guid.NewGuid().ToString());

// Here is the the functionality I am looking for: OpenWrite that returns a Stream.
using (Stream blobStream = blob.OpenWrite())
{
  ....
}

問題是我在新的 API 中找不到OpenWrite方法,它可以讓我訪問Stream

問題

如何使用新的 Azure 存儲 SDK v12 打開可寫 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ 到 Blob?


解決方法

由於我正在使用 Azure 函數,因此我有一個解決方法,涉及使用 Blob 作為我的 function 的 Out 參數:

public async Task RunAsync(
            [BlobTrigger("data/{listId}/{name}.txt", Connection = "storageAccountConnectionString")]
            Stream sourceStream,
            string listId,
            string name,
            [Blob("data/{listId}/processed/{name}.txt", FileAccess.Write, Connection = "storageAccountConnectionString")] 
            Stream destinationStream)
{
    //  Here I use the destinationStream instance to upload data as it is being processed. It prevents me from loading everything in memory before calling the UploadAsync method of a BlobClient instance.
}

您需要使用 Azure.Storage.Blobs.Specialized 命名空間中的 GetBlockBlobClient 擴展方法:

public async Task<Stream> CreateOutputStream(string fullFilePath)
{
    var blockBlobClient = _blobContainerClient.GetBlockBlobClient(fullFilePath);
    var stream = await blockBlobClient.OpenWriteAsync(true);

    return stream;
}

嘗試這個

BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync("zipfiles");
BlobClient blobClient = containerClient.GetBlobClient(Guid.NewGuid().ToString());

using(FileStream strem = File.OpenRead("10_million_lines.file")){
   await blobClient.UploadAsync(strem , true);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM