如何在MVC的私有Azure存储中的.cshtml页面中显示图像?

人力资源

在检查html页面时出现以下错误:

<Error>
    <Code>AuthorizationFailure</Code>
    <Message>This request is not authorized to perform this operation.
           RequestId:7b853423-101e-0015-51e5-905acd000000
           Time:2020-09-22T13:38:05.2479851Z
    </Message>
</Error>

我已经在web.config文件中为Azure连接字符串创建了密钥,该方法用于访问对私有私有的Azure存储Blob的书面方法:

public ActionResult BlobManager(string ContainerName = "images")
{
    string ConnectionString = ConfigurationManager.AppSettings["AzureStorageConnectionString"].ToString();
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
    CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
    blobContainer = cloudBlobClient.GetContainerReference(ContainerName);

    //Make available to everyone
    blobContainer.SetPermissions(new BlobContainerPermissions{
        PublicAccess = BlobContainerPublicAccessType.Blob
        });
    }

这是我的控制器方法:

[HttpGet]
public JsonResult GetImageList(int TaskID)
{
    var data = (from d in _context.ImgTable
                where (d.Taskid == TaskID )
                select new
                {
                    d.ImageID,
                    d.Taskid,
                    d.ImagePath,
                }).ToList();
    return Json(data, JsonRequestBehavior.AllowGet);
}

请帮助进一步。我想在html页面中显示图像。我从下拉列表中选择Taskid,然后单击它在html表中显示与该taskid相关的图像。下面是js函数:

$.ajax({
        type: 'GET',
        url: '@Url.Action("GetImageList")',
        datatype: JSON,
        data: {
                'TaskID': $("#tasklist").val()                //getting selected TaskID from dropdown
        },
        success: function (data) {
                 var row_no = 1;
                 $.each(data, function (i, item) {
             
                 var path = "https://abcdatastorage.blob.core.windows.net/task/";     //azure storage url
                 var img = item.ImagePath;                                            //getting imagepath from local db
                     img = img.replace(/\s+/g, '%20');
                 var img1 = img.split('\\');
                     img = (path + img1[5]);                                          //joining above url to get complete url to bind with <img src>

            
                + "<td id='ItemId" + row_no + "' >" + item.ID + "</td>"               // displaying image id in html table

                "<td>"
                + "<div><img id='Image" + row_no + "' src=" + img + " class='img-fluid img-thumbnail' alt='' style='width:500px; height:350px;' />"  // display image for that imageid
                + "</div></td > "
     });

我可以直接在html中传递azure存储网址吗?我可以访问和显示图像吗?如果天蓝色存储是私有的,如何显示图像?

下面是我通过串联用js写的url的src。但是看不到图像。

<div>
    <img src='https://abcimages.blob.core.windows.net/images/418;1488163937486;d%20V%20Phase%205.0%20kV.jpg' class='img-fluid img-thumbnail' alt='' style='width:500px; height:350px;' />
</div>

请协助解决。如何通过代码访问私有天蓝色存储,并且可以显示图像。

潘杰森

我有一个实现此功能的简单方法,您的代码不需要大量修改。

我的建议是您编写一个通用GetAccountSASToken方法。如果需要安全性验证,建议在通过验证后调用此方法,以便sas token可以生成生成的并将其附加到img URL。

您可以阅读官方文档“使用.NET创建帐户SAS”

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
    Console.WriteLine(GetAccountSASToken());
}
public static string GetAccountSASToken()
{
    // To create the account SAS, you need to use Shared Key credentials. Modify for your account.
    const string ConnectionString = "DefaultEndpointsProtocol=**fix=core.windows.net";
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);

    // Create a new access policy for the account.
    SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
    {
        Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write | SharedAccessAccountPermissions.List,
        Services = SharedAccessAccountServices.Blob | SharedAccessAccountServices.File,
        ResourceTypes = SharedAccessAccountResourceTypes.Service | SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Object,
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
        Protocols = SharedAccessProtocol.HttpsOnly
    };

    // Return the SAS token.
    return storageAccount.GetSharedAccessSignature(policy);
}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure如何在VNET中通过私有IP调用Azure私有终结点(Azure私有链接服务)

来自分类Dev

如何在Azure中定义私有子网

来自分类Dev

如何在Azure虚拟网络中访问私有VM

来自分类Dev

如何知道在wordpress中显示图像的页面

来自分类Dev

在jsp页面中显示图像的最佳方法

来自分类Dev

使用echo在我的页面中显示图像

来自分类Dev

高亮显示页面加载中的特定图像

来自分类Dev

HTML /在HTML页面中显示图像

来自分类Dev

画布图像未显示在页面加载中

来自分类Dev

在“查看页面”中,andorid中未显示“图像滑块”的图像

来自分类Dev

在“查看页面”中,andorid中未显示“图像滑块”的图像

来自分类Dev

在React中显示页面之前如何加载所有图像?

来自分类Dev

如何在php页面上显示存储在数据库中的图像?

来自分类Dev

如何在具有 SSH 存储库访问权限的 AWS 私有 VPS 中安装 Phabricator

来自分类Dev

AngularJS,如何在CSHTML中显示DateTime

来自分类Dev

如何在cshtml中显示联接的表

来自分类Dev

AngularJS,如何在CSHTML中显示DateTime

来自分类Dev

.cshtml页面及其在MVC中的元素

来自分类Dev

CSHTML页面MVC中的简单JavaScript

来自分类Dev

无法在MVC中修改CSHTML页面

来自分类Dev

如何在GitHub桌面应用程序中克隆私有BitBucket存储库

来自分类Dev

如何在Swagger-UI上加载托管在私有GitHub存储库中的文件

来自分类Dev

如何在GitHub中为公共或私有存储库创建发布?

来自分类Dev

如何在私有类的2D向量中存储数据?

来自分类Dev

如何在Jenkins Job中克隆github组织的私有存储库

来自分类Dev

如何在nix派生中克隆私有git存储库

来自分类Dev

图像未显示在Spring MVC jsp页面中

来自分类Dev

如何在Azure DevOps中获取所有存储库

来自分类Dev

如何在ionic 4页面中显示存储在postgre db(作为base64)中的图像?

Related 相关文章

  1. 1

    Azure如何在VNET中通过私有IP调用Azure私有终结点(Azure私有链接服务)

  2. 2

    如何在Azure中定义私有子网

  3. 3

    如何在Azure虚拟网络中访问私有VM

  4. 4

    如何知道在wordpress中显示图像的页面

  5. 5

    在jsp页面中显示图像的最佳方法

  6. 6

    使用echo在我的页面中显示图像

  7. 7

    高亮显示页面加载中的特定图像

  8. 8

    HTML /在HTML页面中显示图像

  9. 9

    画布图像未显示在页面加载中

  10. 10

    在“查看页面”中,andorid中未显示“图像滑块”的图像

  11. 11

    在“查看页面”中,andorid中未显示“图像滑块”的图像

  12. 12

    在React中显示页面之前如何加载所有图像?

  13. 13

    如何在php页面上显示存储在数据库中的图像?

  14. 14

    如何在具有 SSH 存储库访问权限的 AWS 私有 VPS 中安装 Phabricator

  15. 15

    AngularJS,如何在CSHTML中显示DateTime

  16. 16

    如何在cshtml中显示联接的表

  17. 17

    AngularJS,如何在CSHTML中显示DateTime

  18. 18

    .cshtml页面及其在MVC中的元素

  19. 19

    CSHTML页面MVC中的简单JavaScript

  20. 20

    无法在MVC中修改CSHTML页面

  21. 21

    如何在GitHub桌面应用程序中克隆私有BitBucket存储库

  22. 22

    如何在Swagger-UI上加载托管在私有GitHub存储库中的文件

  23. 23

    如何在GitHub中为公共或私有存储库创建发布?

  24. 24

    如何在私有类的2D向量中存储数据?

  25. 25

    如何在Jenkins Job中克隆github组织的私有存储库

  26. 26

    如何在nix派生中克隆私有git存储库

  27. 27

    图像未显示在Spring MVC jsp页面中

  28. 28

    如何在Azure DevOps中获取所有存储库

  29. 29

    如何在ionic 4页面中显示存储在postgre db(作为base64)中的图像?

热门标签

归档