Obtenir un fichier de n'importe quelle bibliothèque dans l'arborescence Web
Question
est-il possible d'utiliser des API de SharePoint intégrées pour ouvrir un fichier, quel que soit le Web et la bibliothèque, il est dans?
Exemple:
Compte tenu du fichier: /subsitea/publishiningimages/myimage.jpg Je veux l'ouvrir et obtenir l'élément de la liste, mais utiliser ceci échoue:
var url = "/subsiteA/PublishingImages/myimage.jpg";
var file = SPContext.Current.Site.RootWeb.GetFile(url);
SPListItem item = file.GetListItem(); //Fails here with item not in library error
Naturellement, il ne fonctionnera pas car le fichier n'est pas situé dans la bande racine, mais existe-t-il un moyen générique de localiser le fichier, quelle que soit la bande Web et la bibliothèque et récupérez l'objet Splistitem lié au fichier?
La solution
Very similar to above, the SPSite object does actually remember the URL it was opened with - so you don't have to give a Web name. You should be able to use something like:
string url= "Full URL to File";
using (SPSite site = new SPSite(url)){
using (SPWeb web = site.OpenWeb())
{
SPFile file = web.GetFile(url);
SPListItem item = file.ListItemAllFields;
}
}
Autres conseils
Je ne pense pas qu'il soit possible d'obtenir un fichier de telle manière.J'ai aussi vraiment voulu savoir si possible.
Autre moyen, vous devez coder comme:
Utilisation (SPSITE SITE= NOUVEAU SPSITE ("YOURSITEURL")) {
using (SPWeb web = site.OpenWeb("subsiteA"))
{
SPFile file = web.GetFile("/subsiteA/PublishingImages/myimage.jpg");
SPListItem item = file.ListItemAllFields;
}
}