2017-09-22 3 views
0

Gemäß dem Titel anhängen verwendet werden, ich habe ein Programm, wobei ich zu einem bestehenden BlobkBlob hinzufügen bin versucht, die PutBlock Methode:Kann PutBlock zu einem bestehenden BlockBlob in Azure

private static void UploadNewText(string text) 
    { 
     string fileName = "test4.txt"; 
     string containerString = "mycontainer"; 

     CloudStorageAccount storage = CloudStorageAccount.Parse(connection); 
     CloudBlobClient client = storage.CreateCloudBlobClient(); 
     CloudBlobContainer container = client.GetContainerReference(containerString); 
     CloudBlockBlob blob = container.GetBlockBlobReference(fileName); 

     using (MemoryStream stream = new MemoryStream()) 
     using (StreamWriter sw = new StreamWriter(stream)) 
     { 
      sw.Write(text); 
      sw.Flush(); 
      stream.Position = 0; 

      string blockId = Convert.ToBase64String(
       ASCIIEncoding.ASCII.GetBytes("0000005")); 

      Console.WriteLine(blockId); 

      blob.PutBlock(blockId, stream, null); 
      blob.PutBlockList(new string[] { blockId }); 
     } 
    } 

Wie ich verstehe Wenn die BlockId größer wird (oder sich zumindest unterscheidet) und eine konsistente Größe aufweist, sollte dies funktionieren. Wenn ich es jedoch ein zweites Mal für dieselbe Datei ausführe (unabhängig davon, ob ich die Block-ID erhöhe oder nicht), überschreibt es einfach die vorhandene Datei mit dem neuen Text.

Ich weiß, es gibt andere Optionen zum Anhängen an einen Blob (wie AppendBlob), aber ich bin gespannt, ob PutBlock, speziell dies tun kann. Ist das, was ich versuche zu tun, und wenn ja, was mache ich falsch?

Antwort

1

Kann PutBlock zu einem bestehenden BlockBlob in Azure anhängen verwendet werden

Ja, es kann. Aber um das zu tun, müssen Sie das etwas anders machen.

Was müssen Sie tun, ist:

  1. Zuerst erhalten die zuvor Blockliste verpflichtet. Die Methode, die Sie verwenden möchten, ist DownloadBlockList.
  2. Neuen Block hochladen. Notieren Sie sich seine Block-ID.
  3. Fügen Sie diese Block-ID der Liste der Block-IDs hinzu, die Sie in Schritt 1 heruntergeladen haben.
  4. Rufen Sie die Sperrliste mit dieser neuen Liste auf.
+0

Für (2), wie würden Sie einen Block ohne PutBlock hochladen? Können die Blöcke unabhängig außerhalb eines Blobs hochgeladen werden? –

+0

Sorry, mir war nicht klar. In # 2 laden Sie den Block mit PutBlock hoch. –

+0

Aber brauchen Sie nicht die Block-ID, um PutBlock zu verwenden? –

Verwandte Themen