2013-07-30 3 views
0

CSV 파일에 등록 항목을 기록합니다 (나중에 모든 항목을 포함 시키려면 필요하므로 CSV 파일의 마지막 줄에 항목을 추가하십시오). :Azure Blob에서 CSV 로그를 저장하는 가장 좋은 방법

using (StreamWriter w = new StreamWriter(currentPath, true)) 
{ 
    w.WriteLine(fileRow); 
} 

하지만 Windows Azure에서는 실제 파일에 액세스 할 수 없으므로 BLOB 저장소를 사용해야합니다.

블롭 블록에서 동일한 작업을 수행하려면 어떻게해야합니까?

내가 시도 :

CloudBlobContainer blobContainer = blobStorage.GetContainerReference(containerName); 
cloudBlob = blobContainer.GetBlobReferenceFromServer(blobNameLogs); 

MemoryStream oldText = new MemoryStream(); 
cloudBlob.DownloadToStream(oldText); 

// record to save 
string fileRow = row.ToFileRow(); 

// append 
MemoryStream newText = new MemoryStream(); 
using (StreamWriter w = new StreamWriter(newText, System.Text.Encoding.Default)) 
{ 
    w.WriteLine(oldText); 
    w.WriteLine(fileRow); 

    // set blob data 
    cloudBlob.UploadFromStream(newText); 
} 

하지만 내가 무엇을 놓치고 ...이 작업 후 파일에 0 bytes가 계속? 기존 파일에 단순히 텍스트를 추가하는 것이 더 쉬운 작업입니까?

답변

0

다음 예제와 같이 BlobStream을 사용하여 작업 개체를 제안합니다.

_container.CreateIfNotExist(); 

    CloudBlob inputBlob = _container.GetBlobReference(outputBlobUri); 
    CloudBlob outputBlob = _container.GetBlobReference(inputBlobUri); 

    using (BlobStream input = inputBlob.OpenRead()) 
    using (BlobStream output = outputBlob.OpenWrite()) 
    { 
    ProcessImage(input, output); 

output.Commit(); 
outputBlob.Properties.ContentType = "image/jpeg"; 
outputBlob.SetProperties(); 

FunnyAppRepository<Post> postRepository = new FunnyAppRepository<Post>(); 
Post post = postRepository.Find(partitionKey, rowkey); 

post.PostImage = outputBlobUri; 
post.State = true; 
postRepository.Update(post); 
postRepository.SubmitChange(); 

_queue.DeleteMessage(message); 
} 
관련 문제