簡體   English   中英

列出具有Azure Blob存儲的容器的內容

[英]Listing the contents of a container with Azure Blob storage

我正在使用C#編寫的ASP.NET MVC創建雲存儲應用程序。 我目前可以將文件上傳到Azure存儲Blob容器,但是每個文件名在上傳頁面本身上都顯示為單詞“ images”。 文件名在Azure中是正確的。

我想顯示文件的實際名稱,而不是單詞“ images”。

這是文件上傳后當前顯示的內容

我的控制器的一段代碼:

    public ActionResult Upload()
    {
        // Retrieve storage account from connection string.
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
            CloudConfigurationManager.GetSetting("AzureString"));

        // Create the blob client.
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer blobContainer = blobClient.GetContainerReference("Container");

        List<string> blobs = new List<string>();
        foreach (var blobItem in blobContainer.ListBlobs())
        {
            blobs.Add(blobItem.Uri.ToString());
        }
        return View(blobs);
    }

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase image)
    {
        if (image.ContentLength > 0)
        {
            // Retrieve storage account from connection string.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("AzureString"));

            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            // Retrieve a reference to a container.
            CloudBlobContainer blobContainer = blobClient.GetContainerReference("Container");

            CloudBlockBlob blob = blobContainer.GetBlockBlobReference(image.FileName);
            blob.UploadFromStream(image.InputStream);
        }
        return RedirectToAction("Upload");
    }

相關觀點:

    @{
        ViewBag.Title = "Upload";
    }

    @if (Request.IsAuthenticated)
    {
        <h2>Upload</h2>
        <p>
            @using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
            {
                <input type="file" name="image" />
                <input type="submit" value="Upload" />
            }
        </p>
        <ul style="list-style-type: none; padding:0">
            @foreach (var item in Model)
            {
                <li>
                    <img src="@item" alt="images" width="100" height="100" />
                    <a id="@item" href="#" onclick="deleteImage('@item');">Delete</a>
                </li>
            }
        </ul>

        <script>
        function deleteImage(item)
        {
            var url = "/Files/DeleteImage";
            $.post(url, {Name: item}, function (data) {
            window.location.href = "/Files/Upload";
            alert(data);
            })
        }
        </script>
    }
    else
    {
        <ul class="nav navbar-nav navbar-right">
            <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
            <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
        </ul>
    }

如果這是一個簡單的錯誤,請提前道歉。 我是ASP.NET,C#和Azure的新手。

通過使容器公開可見能夠使其工作

container.SetPermissions(
new BlobContainerPermissions 
    { PublicAccess = BlobContainerPublicAccessType.Blob});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM