我在我的 Azure 存储帐户中上传了一个文本文件。现在,在我的工作角色中,我需要做的是每次运行时,它都会从数据库中获取一些内容,并且该内容必须写入上传的文本文件中,具体来说,每次文本文件的内容都应该被一些新的内容覆盖。
在这里,他们提供了一种将文本文件上传到您的存储并删除文件的方法。但我不想这样做,每次只需要修改已经存在的文本文件。
我在我的 Azure 存储帐户中上传了一个文本文件。现在,在我的工作角色中,我需要做的是每次运行时,它都会从数据库中获取一些内容,并且该内容必须写入上传的文本文件中,具体来说,每次文本文件的内容都应该被一些新的内容覆盖。
在这里,他们提供了一种将文本文件上传到您的存储并删除文件的方法。但我不想这样做,每次只需要修改已经存在的文本文件。
我假设您指的是在 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);
}