2017-07-28 47 views
0

我目前正在开发基于Sharepoint REST API和Microsoft Graph的应用程序。我的应用程序主要由选项卡式页面组成,在第一个选项卡上我想显示来自SharePoint的新闻。要做到这一点,我想从新闻中获取图片,但将图片的网址作为图片源返回给我“禁止”的错误。所以,我决定找到一种方法来下载这些图像。我一直在寻找几天的方式,并没有发现任何东西...从sharepoint下载并显示图像(Xamarin.Forms PCL)

有没有人知道一种方法来做到这一点,或为什么我有一个禁止访问错误?

我带来一定的精度,我使用的是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。我成功地获取网址,但不显示图像,知道我可以从SharePoint检索任何其它数据

感谢您的帮助,

回答

0

Image组件可以使用URL作为它的数据,但需要AREN图片不在身份验证之后,这可能就是您的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/

+0

是的,这是一种方式。我使用PCLStorage存储数据,我设法从共享点获取数据到设备中,但尚未获取图像。我很确定我错过了一些关于我的HttpClient的需求,而不是“经典”数据。 – Inglorious

相关问题