从 URL 获取共享点图像

Get sharepoint images from URL

我正在尝试从 URL 获取图像作为 BitmapImage,但不知道如何获取。 URL 在列表 Sharepoint 中,我已经像这样检索:

public async Task<Microsoft.SharePoint.Client.ListItemCollection> getListContent(string listName)
        {
            Microsoft.SharePoint.Client.ListItemCollection items;

            string userName = Settings.Default.User;
            string password = Settings.Default.Pass;
            string siteUrl = Settings.Default.URL;

            using (ClientContext clientContext = new ClientContext(siteUrl))
            {
                SecureString securePassword = new SecureString();
                foreach (char c in password.ToCharArray())
                {
                    securePassword.AppendChar(c);
                }

                clientContext.AuthenticationMode = ClientAuthenticationMode.Default;
                clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword);

                await clientContext.ExecuteQueryAsync();

                Microsoft.SharePoint.Client.List TargetList = clientContext.Web.Lists.GetByTitle(listName);
                CamlQuery query = CamlQuery.CreateAllItemsQuery();
                items = TargetList.GetItems(query);

                clientContext.Load(items);
                clientContext.ExecuteQuery();
            }
            return items;
        }

其中一个字段包含共享点库中图像的 url,我正在尝试像这样检索它:

     public Model.Control createModelControl(Microsoft.SharePoint.Client.ListItem item)
        {
            return new Model.Control
            {

                BmpImg = new BitmapImage(new Uri((item["Image"] as FieldUrlValue)?.Url))
        }

当我检查结果时,这就是我所拥有的: enter image description here

enter image description here

我想我需要用客户端上下文再次加载它,但我不确定该怎么做。在前提下使用 Sharepoint,有一个名为“DownloadData”的方法,但 SPO 似乎不存在...

有什么想法吗?

我成功了,方法如下:

public static BitmapImage DownloadDocumentFromSharepoint(string imgUrl)
{
    try
    {
        ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;

        string userName = localSettings.Values["User"].ToString();
        string password = localSettings.Values["Pass"].ToString();
        string siteUrl = localSettings.Values["siteUrl"].ToString();

        using (ClientContext ctx = new ClientContext(siteUrl))
        {
            ctx.AuthenticationMode = ClientAuthenticationMode.Default;
            ctx.Credentials = new SharePointOnlineCredentials(userName, password);
            ctx.Load(ctx.Web, a => a.ServerRelativeUrl);
            ctx.ExecuteQueryAsync().GetAwaiter().GetResult();


            Microsoft.SharePoint.Client.File res = ctx.Web.GetFileByUrl(imgUrl);
            ctx.Load(res);
            ctx.ExecuteQueryAsync().GetAwaiter().GetResult();


            Windows.Storage.Streams.IRandomAccessStream fileContent = null;
            BitmapImage btmImgRes = new BitmapImage();


            ClientResult<Stream> data = res.OpenBinaryStream();
            ctx.Load(res);
            ctx.ExecuteQueryAsync().GetAwaiter().GetResult();

            using (MemoryStream mStream = new MemoryStream())
            {
                if (data != null)
                {
                    data.Value.CopyTo(mStream);
                    mStream.Position = 0;
                    fileContent = mStream.AsRandomAccessStream();                            
                    btmImgRes.SetSource(fileContent);
                }
            }
            return btmImgRes;
        }
    }
    catch (Exception ex)
    {
        throw new Exception("fail to download document from sharepoint");
    }
}