【发布时间】:2019-11-05 19:53:44
【问题描述】:
我有与 Azure Blob 交互的简单代码,如下所示。
我想获取上传文件的 URL。
假设如果在我的 blob 存储中,我有一个容器,其中有多个文件夹,我需要获取文件的路径。因此,我正在尝试使用 blockBlob.Uri 参数。
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string storageAccConnString = "Connection string";
CloudStorageAccount storageAccount = "Account Name";
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
string folderPath "Folder1" + Path.DirectorySeparatorChar + "Folder2" + Path.DirectorySeparatorChar + "Folder3";
CloudBlobContainer container = blobClient.GetContainerReference(folderPath);
CloudBlockBlob blockBlob = container.GetBlockBlobReference("Local system filePath which needs to be uploaded to Blob");
Console.WriteLine("URI : " + blockBlob.Uri);
Console.WriteLine("URI : " + blockBlob.Uri.ToString());
Console.WriteLine("URI : " + blockBlob.Uri.OriginalString);
Console.ReadLine();
// I didnt write the upload code as my question was regarding URI
}
}
}
我收到了对此的回复,但我收到的不是“/”或“\”之类的文件夹分隔符,而是%5C。
URI: https://storageaccountname.blob.core.windows.net/Folder1%5CFolder2%5Folder3/Test.zip
我该如何纠正这个问题。任何帮助都会很有用。谢谢。
【问题讨论】:
-
这就是 URI 嵌入特殊字符的方式。它们应该在远端被很好地解码。
-
@SteveTodd ,我可以上传文件了。我没有遇到任何问题。我还必须打印 URI 以用于记录目的。而且我无法使用特殊字符获得正确的 URI。我也不想使用 String.Replace 方法。
-
@CrazyCoder 那些 是正确的 URL 字符。在任何情况下,any 云存储提供商中都没有文件夹——不是 AWS、Google 或 Azure。所有都是带有 blob 的平面容器,其名称是容器 URL 之后的字符串。在 AWS 和 Azure 中,通过处理文件夹分隔符等一些字符,模拟 Blob
标签: c# azure azure-blob-storage