【问题标题】:How to get image bytes or URL using its GUID?如何使用其 GUID 获取图像字节或 URL?
【发布时间】:2018-11-26 23:33:30
【问题描述】:

使用 Kentico 11.0.26 CMS 和 MVC 网站。

有一个带有图像字段的自定义纯内容页面类型。图片上传到页面后,我需要在 MVC 站点上显示它。但是 Kentico 生成的代码MyPageTypeProvider.GetMyPageType((int nodeId, string cultureName, string siteName) 返回的页面对象只包含图像的 GUID。没有字节,没有 URL。

如何获取上传图片的字节或 URL?

【问题讨论】:

    标签: asp.net-mvc kentico


    【解决方案1】:

    如果你需要字节,你可以这样做:

    var attachment =DocumentHelper.GetAttachment(guid, SiteContext.CurrentSiteName, true);
    var bytes = attachment.AttachmentBinary;
    

    如果你想要一个图片的 URL,你可以这样做:

     imageUrl = $"/getattachment/{guid}/attachment.aspx"
    

    This documentation 解释了更多使用附件的方法。

    【讨论】:

      【解决方案2】:

      您需要解析 URL,或通过 GUID 获取文件。问题是,Kentico Nuget API 似乎没有提供足够的选项来获取文件二进制文件。

      来自 Kentico.Content.Web.MVC NuGet 的 HelperMethods 似乎是一个好的开始:

      https://github.com/Kentico/Mvc/tree/master/src/Kentico.Content.Web.Mvc

      通过这些你可以获取文件 URL 并使用:

      using (var client = new WebClient())
      {
          client.DownloadFile("http://example.com/file/song/a.mpeg", "a.mpeg");
      }
      

      或者您可以编写自己的类或服务,参考 Kentico DLL 并使用:

      AttachmentBinaryHelper.GetFilePhysicalPath(string siteName, string guid, string extension)
      

      【讨论】:

      • 谢谢,但是你能举一个 Kentico.Content.Web.MVC 的例子而不是 WebClient 的例子吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2012-08-07
      • 2018-12-03
      • 2017-02-24
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多