VB.NET と Azure .NET アセンブリを使用して、Azure BLOB にファイルをアップロードしています。ファイルが大きいので、ブロックに分割して、CloudBlockBlob.PutBlock
. 私が抱えている問題はBlockID
、1 文字より長い を指定すると、「指定されたブロブまたはブロックのコンテンツが無効です」というメッセージが表示されることです。エラーからPutBLock
。blockID が 1 文字のみの場合、正常にアップロードされます。
Dim iBlockSize As Integer = 1024 ' KB
Dim alBlockIDs As New ArrayList
Dim iBlockID As Integer = 10
' Create the blob client.
Dim blobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
' Retrieve reference to a previously created container.
Dim container As CloudBlobContainer = blobClient.GetContainerReference("mycontainer")
' Retrieve reference to a blob named "myblob".
Dim blockBlob As CloudBlockBlob = container.GetBlockBlobReference("myblob")
Dim buffer(iBufferSize) As Byte
fs.Read(buffer, 0, buffer.Length)
Using ms As New MemoryStream(buffer)
' convert block id to Base64 Encoded string
Dim b64BlockID As String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(iBlockID.ToString(Globalization.CultureInfo.InvariantCulture)))
' write the blob block
blockBlob.PutBlock(b64BlockID, ms, Nothing)
alBlockIDs.Add(b64BlockID)
iBlockID += 1
End Using
の場合iBlockID = 1
、PutBlock
メソッドは正常に機能します (各ブロックで同じ長さの blockID に対処する必要がありますが、後で心配します)。何が起こっているのですか?現在、ローカルの Azure ストレージ エミュレーターでテストしています。