我正在尝试使用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
的容器的根目录中。
答案 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");
它将文件上传到您指定的容器中。