从sharepoint下载并显示图像(Xamarin.Forms PCL)

时间:2017-07-28 10:22:10

标签: sharepoint xamarin.forms

我目前正在开发基于Sharepoint REST API和Microsoft Graph的应用程序。我的应用程序主要由选项卡页面组成,在第一个选项卡上我想显示来自sharepoint的新闻。为此我想从新闻中获取图像,但使用图像的URL作为图像源返回我“禁止”错误。所以,我决定找到一种下载这些图像的方法。我一直在寻找几天的方式,一无所获......

有没有人知道这样做的方法,或者为什么我有禁止访问错误?

我带来了一些精确性,我正在使用HttpClient通过REST API对租户进行身份验证:

client = new HttpClient();
Uri mUri = new Uri(App.ReturnUri);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var data = await DependencyService.Get<IAuthenticator>()
                         .Authenticate(App.LoginAuthority, App.RestResourceUri, App.ClientId, mUri);
App.AuthenticationResult = data;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", App.AuthenticationResult.AccessToken);

从那以后,我希望有人知道是否有办法下载图像,或者访问url以便将它们用作Source。我成功地检索了URL但没有显示图像,知道我可以从sharepoint检索任何其他数据

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

Image组件可以使用URL作为其数据,但这需要不在身份验证后面的图像,这可能是您的SharePoint图像的情况。这也是为什么它会给你一个Forbidden错误。

var webImage = new Image { Aspect = Aspect.AspectFit };
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"));

要为SharePoint添加身份验证层,您可能可以实现自己的UriImageSource实现。最后,ImageSource只需要一个Stream对象,因此可以从互联网或本地存储中获取该对象。

要下载和存储图像,您必须专门为两个平台编写代码,因为本地存储的工作方式不同。查看此博客文章作为起点与您自己的代码相结合。

https://blog.falafel.com/xamarin-forms-storing-and-retrieving-photos/