如何在根目录而不是$ root目录中放置BLOB?

时间:2018-10-09 01:33:49

标签: c# azure-storage

我正在尝试使用WindowsAzure.Storage C#NuGet包将BLOB上传到容器的 root 。如果我执行以下操作:

var AZURE_CONNECTION_STRING_TEMPLATE = "DefaultEndpointsProtocol=http;AccountName={0};AccountKey={1};BlobEndpoint={2};";
var string AZURE_ACCOUNT_NAME = "devstoreaccount1";
var string AZURE_ACCOUNT_KEY = "abcd-redacted";
var string AZURE_BLOB_ENDPOINT = "http://127.0.0.1:10000/devaccount1/mycontainer";

var azureBlobConnectionString = string.Format(
  AZURE_CONNECTION_STRING_TEMPLATE,
  AZURE_ACCOUNT_NAME,
  AZURE_ACCOUNT_KEY,
  AZURE_BLOB_ENDPOINT);

var container = serviceClient.GetRootContainerReference();
var blob = container.GetBlockBlobReference(Path.GetFileName(FILE_TO_UPLOAD));

BLOB最终位于名为$root的容器中,并且实际上没有显示在该容器的“根”中。如果我尝试以下操作:

var container = serviceClient.GetContainerReference("/");

它最终存储在名为<no name>的容器中。

我希望文件位于名为mycontainer的容器的根目录中。

1 个答案:

答案 0 :(得分:1)

您应该在GetContainerReference()方法中添加指定的容器:

代码如下:

  string StorageConnectionString = "DefaultEndpointsProtocol=https;AccountName=your_account;AccountKey=your_key;EndpointSuffix=core.windows.net";

  CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnectionString);
  var client = storageAccount.CreateCloudBlobClient();
  var container = client.GetContainerReference("t11");
  var cloudBlockBlob =  container.GetBlockBlobReference(@"test1234.txt");
  cloudBlockBlob.UploadFromFile(@"d:\test1234.txt");

它将文件上传到您指定的容器中。