0

我正在将注册条目记录到 CSV 文件中(因为稍后需要包含整个月的所有注册),方法是将条目附加到该文件的最后一行,例如:

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

但是在 Windows Azure 中,我无法访问物理文件,所以我需要使用 Blob Storage。

如何对 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在此操作之后我一直在获取文件......我错过了什么?是否有更简单的操作来简单地将文本附加到现有文件?

4

1 回答 1

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);
}
于 2013-07-31T14:41:33.027 回答