从 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");
}
}
我正在尝试从 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");
}
}