Azure将CloudBlockBob URL更改为与name不同

时间:2015-06-03 08:45:59

标签: c# .net azure azure-storage-blobs

我有上传我的图片的代码

        var blobClient = _storageAccount.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference(blobName);

        // Create a unique name for the images we are about to upload
        var file = String.Format("{0}-{1}{2}", fileName, Guid.NewGuid(), Path.GetExtension(fileToUpload.FileName));

        // Upload image to Blob Storage
        var blockBlob = container.GetBlockBlobReference(file);
        blockBlob.Properties.ContentType = fileToUpload.ContentType;
        await blockBlob.UploadFromStreamAsync(fileToUpload.InputStream);

        fullPath = blockBlob.Uri.ToString();

现在在blob我有这个信息名称:测试+ GUID / 网址:测试+ GUID enter image description here

如何以blob 名称:test / 网址:GUID保存,因此不会显示网址中的名称?

1 个答案:

答案 0 :(得分:4)

使用blob名称与URL不同的方式不起作用。这有点像你的Windows路径,它将类似于你的文件名,而这两者不可能不同。

但考虑到您的要求,请在blob名称和url中仅使用GUID,以便从URL隐藏文件的实际名称。并尝试使用Blob元数据来存储和获取实际名称。

// Get a reference to a blob.
CloudBlob blob = blobClient.GetBlobReference("mycontainer/myblob.txt");

// Populate the blob's attributes.
blob.FetchAttributes();

// Enumerate the blob's metadata.
foreach (var metadataKey in blob.Metadata.Keys)
{
Console.WriteLine("Metadata name: " + metadataKey.ToString());
Console.WriteLine("Metadata value: " +        
blob.Metadata.Get(metadataKey.ToString()));
}