我們偶爾會有從 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 時,了解不同方法的特性與限制至關重要,這些知識不僅能幫助我們解決問題,在每一次解決問題的過程中都是一次學習和成長的機會。