我有一個基本的Web應用程序在C#MVC(我是新來的MVC)連接到數據庫。在那個數據庫中有一個包含文件名列表的表格。這些文件存儲在Azure存儲Blob容器中。C#MVC Web應用服務連接到Azure存儲Blob
我用Scaffolding(創建一個控制器和視圖)來顯示我的文件名錶中的數據,並且工作正常。
現在我想將這些文件名連接到blob存儲,以便用戶可以點擊並打開它們。我如何實現這一目標?
我是否編輯索引視圖?我是否讓用戶單擊文件名,然後連接到Azure存儲以打開該文件?這是如何完成的?
請注意,存儲上的文件是私人的,並使用存儲密鑰進行訪問。文件不能公開。
感謝您的任何建議。
[更新]
我已經使用下面的代碼實現的共享訪問簽名(SAS)。
public static string GetSASUrl(string containerName)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
BlobContainerPermissions containerPermissions = new BlobContainerPermissions();
containerPermissions.SharedAccessPolicies.Add("twominutepolicy", new SharedAccessBlobPolicy()
{
SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-1),
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(2),
Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read
});
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Off;
container.SetPermissions(containerPermissions);
string sas = container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "twominutepolicy");
return sas;
}
public static string GetSasBlobUrl(string containerName, string fileName, string sas)
{
// Create new storage credentials using the SAS token.
StorageCredentials accountSAS = new StorageCredentials(sas);
// Use these credentials and the account name to create a Blob service client.
CloudStorageAccount accountWithSAS = new CloudStorageAccount(accountSAS, [Enter Account Name], endpointSuffix: null, useHttps: true);
CloudBlobClient blobClientWithSAS = accountWithSAS.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClientWithSAS.GetContainerReference(containerName);
// Retrieve reference to a blob named "photo1.jpg".
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
return blockBlob.Uri.AbsoluteUri + sas;
}
非常感謝這些信息,幫助我理清了我的問題。最後一個鏈接稍微過時了,儘管我已經用我認爲正確的更新後的代碼更新了我的問題。 – SliderUK