我在Azure存储帐户中上传了一个文本文件。现在,在我的工作者角色中,我需要做的是每次运行时,它从数据库中获取一些内容,并且该内容必须写在Uploaded中文本文件,具体来说,每次都应该用一些新内容覆盖文本文件的内容。
Here,他们提供了一种将文本文件上传到存储空间并删除文件的方法。但是我不想这样做,只需要每次修改已经存在的文本文件。
答案 0 :(得分:6)
我假设您指的是在Windows Azure blob中存储文件。如果是这种情况:blob不是文件系统;它只是一个存储数据的地方(文件的概念有点人为 - 它只是......存储在一堆块中的blob)。
要修改文件,您需要将其下载并保存到本地磁盘,修改它(再次,在本地磁盘上),然后进行上传。关于这一点的一些想法:
只是为了确保这个下载/修改/上传模式是清楚的,这是一个非常简单的例子(我只是在Visual Studio中快速输入它但没有测试它。只是试图说明这一点):
// initial setup
var acct = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
var client = acct.CreateCloudBlobClient();
// what you'd call each time you need to update a file stored in a blob
var blob = client.GetContainerReference("mycontainer").GetBlockBlobReference("myfile.txt");
using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt"))
{
blob.DownloadToStream(fileStream);
}
// ... modify file...
// upload modified file
using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt"))
{
blob.UploadFromStream(fileStream);
}