2017-12-08 21 views
0

Azure Blob 저장소에 파일을 추가하는 방법이 있습니다. 문제는 blob을 덮어 쓰지 않고 간단하게 추가하는 조건을 지정하려고하는 것입니다. 나는 VS이 방법은 두 가지 변수는 인자 비동기 무효 archiveNewImportedImages (목록 imageFiles) {Azure Blob 저장소를 덮어 쓰지 마십시오.

 // Saving the images 
     // Retrieve reference to a blob named "myblob". 


     // Create or overwrite the "myblob" blob with contents from a local file. 

     using (var fileStream = System.IO.File.OpenRead(@"C:\Users\rahulchawla\Desktop\FilezilleIMGS\FilezilleIMGS\MTO_Image\CR01-1-20170623-1327.jpg")) 
     { 

      await blockBlob.UploadFromStreamAsync(fileStream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*")); 
     } 

     // save url of the image into a variable and later to the database 
     /// fileURL = blockBlob.Uri.ToString(); 



    } 

어떤 제안을받을 수 없어 말하고 그러나 매개 변수 액세스 조건을 사용하려고?

최종 목표 : 컨테이너 덮어 쓰지 않음 - 고유 파일 추가 유지 ex. img1.jpg, img2.jpg ~ blob

추가 세부 정보 : 이미지를 컨테이너에 추가하고 싶습니다. 즉 이미지를 컨테이너에 계속 추가하고 싶습니다. 파일이있는 경우 기존 파일을 덮어 쓰지 않으려합니다.)

+0

제대로 이해했다면 기존 내용을 덮어 쓰지 않고 새 내용을 추가하고 싶을 것입니다. 나 맞아? 또는 BLOB가 이미 존재하는 경우 작업을 실패 하시겠습니까? –

+0

올바른 @GauravMantri - 기존 blob에 새 콘텐츠 추가 – rahulchawla

+0

코드에서 이미지를 업로드하고있는 것으로 보입니다. 목표 데이터가 될 것입니까? 그게 사실이라면 당신의 방울이 손상되어 본질적으로 쓸모 없게 될 것이기 때문입니다. 또는 기존 BLOB에 최신 데이터를 추가하려는 로그를 저장하려고합니까? –

답변

0

동일한 BLOB 이름으로 새 콘텐츠를 업로드하려는 경우 Azure BLOB 저장소가 BLOB의 내용을 덮어 씁니다.

내용을 덮어 쓰지 않으려면 할 수있는 일이 있지만 코드를 작성해야합니다.

  1. 업로드 전에 blob이 있는지 확인하고 업로드 작업에 실패하고 blob에 다른 이름을 지정하거나 코드에 새 이름을 지정하도록 사용자에게 알립니다. 당신은 blob.ExistsAsync을 호출하여 블롭의 존재를 확인할 수 있거나 현재하고있는 것과 같은 액세스 조건을 사용하여 작업을 수행 할 수 있습니다. 첫 번째 경우에는 true/false 값을 다시 얻고이를 기반으로 수행 할 작업을 결정합니다. 두 번째 경우에는 업로드 작업이 PreConditionNotMet (412 Status Code)과 함께 실패하므로 예외를 catch하고 수행 할 작업을 결정해야합니다.
  2. 모든 변경 사항의 기록을 유지하려는 경우 Azure BLOB 저장소에서 사용할 수있는 blob snapshot 기능을 확인해야합니다. blob의 스냅 샷을 가져 오면 blob의 읽기 전용 복사본을 만듭니다. 그러나이 경우에는 하나의 얼룩 (blob)과 많은 스냅 샷이 있음을 명심하십시오. 각 스냅 샷은 스냅 샷이 찍힌 날짜/시간으로 고유하게 식별됩니다. blob과 스냅 샷을 가져 와서 그 blob에 대한 변경 내역을 볼 수 있습니다.
0

기존 BLOB에 내용을 추가 할 수있는 CloudAppendBlob 클래스 지금이 : 귀하의 경우

var account = CloudStorageAccount.Parse("storage account connectionstring"); 
var client = account.CreateCloudBlobClient(); 
var container = client.GetContainerReference("container name"); 
var blob = container.GetAppendBlobReference("blob name"); 

당신이 파일에서 추가 할 :

await blob.AppendFromFileAsync("file path"); 

하지만 텍스트, 바이트 배열, 스트림에서 추가 할 수 있습니다. 설명서를 확인하십시오.