[廚餘回收] 使用 Azure.Storage.Blobs 從 URL 複製 Blob 時,收到 256MB 大小限制的錯誤。

我們偶爾會有從 URL 複製檔案的需求,這一天,程式在複製一個檔案的時候,收到了一個錯誤訊息:

The source request body for synchronous copy is too large and exceeds the maximum permissible limit (256MB).

錯誤訊息很明白,說程式在進行同步複製的時候,Request Body 超過了 256MB 的限制,我們來看看要怎麼解決這個問題?

原因在於程式使用的 BlobClient.SyncCopyFromUri()BlobClient.SyncCopyFromUriAsync() 方法有這個限制,那我們把它改掉就好,改使用 BlobClient.StartCopyFromUri()BlobClient.StartCopyFromUriAsync() 方法。

不過,我們從方法名稱應該也能猜到,它只是開始進行複製而已,那何時會結束? 這個我們可以接著呼叫 Operation.WaitForCompletion()Operation.WaitForCompletionAsync() 方法來等待複製結束。

var url = "http://ipv4.download.thinkbroadband.com/512MB.zip";

var st9d8b40a9Client = new BlobServiceClient(connectionString);
var mytestContainerClient = st9d8b40a9Client.GetBlobContainerClient("mytest");
var bigBlobClient = mytestContainerClient.GetBlobClient("bigfile.zip");

// 開始進行複製
var operation = await bigBlobClient.StartCopyFromUriAsync(new Uri(url));

// 等待複製結束
await operation.WaitForCompletionAsync();

以上,提供給有遇到相同問題的朋友參考,我們在使用 Azure SDK 時,了解不同方法的特性與限制至關重要,這些知識不僅能幫助我們解決問題,在每一次解決問題的過程中都是一次學習和成長的機會。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學