【发布时间】:2017-12-13 23:50:18
【问题描述】:
我正在组建一个小型项目管理站点,用户可以在其中使用 Azure Blob 存储将相关文档上传到项目。
我可以上传、查看 blob 列表并下载 blob,但我想做的是在列表中显示 blob,而不包含所有容器和路径信息。
这里是 C#
public ActionResult doclist(int projectid)
{
CloudConfigurationManager.GetSetting("StorageConnectionString", true);
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference(containername);
List<CloudBlockBlob> blobs = new List<CloudBlockBlob>();
//foreach (IListBlobItem item in container.ListBlobs(null, true))
foreach (IListBlobItem item in container.ListBlobs((containername + "/" + projectid.ToString() + "/").ToString()))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
blobs.Add(blob);
}
return View(blobs);
}
视图本质上只是一个简单的
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelitem => item.Name)
</td>
<td>
@Html.DisplayFor(modelitem => item.Properties.Length)
</td>
<td>
@string.Format("{0:dd-MM-yyyy}", item.Properties.LastModified)
</td>
<td>
@Html.ActionLink("Download", "Download", "Projects", new { filename = item.Name}, new { @class = "btn btn-primary" })
</td>
</tr>
}
我最终得到一个 item.Name 值,例如 “容器/project1/document1.jpg” “容器/project1/document2.pdf”等
我只想展示 “document1.jog” "document2.pdf"
我在 HTML 中尝试了一个简单的替换,但我没有设法让它工作。
我还尝试在 C# 中摆弄 blob 数据以更改 URI,但不希望这影响我下载 blob 的方式。
我猜我在这里错过了一些非常简单的东西,但这是我第一次使用 Blob 存储等。
将此类数据写入数据库表并从那里检索是否会更好?
【问题讨论】:
标签: c# asp.net-mvc azure blob