2008-12-11 9 views

Répondre

27

Vous pouvez, si vous connaissez l'URL aussi utiliser la propriété SPFile.Exists comme suit:

using (SPSite site = new SPSite("http://server/site")) 
using (SPWeb web = site.OpenWeb()) 
{ 
    SPFile file = web.GetFile("/site/doclib/folder/filename.ext"); 
    if (file.Exists) 
    { 
    ... 
    } 
} 

On pourrait à la première pensée suppose SPWeb.GetFile lance une exception si le fichier n'existe pas. Mais comme vous le voyez, ce n'est pas le cas - cela retournera un objet SPFile.

+0

a marché pour moi, Merci – User5590

1

l'aide d'une requête CAML est le moyen le plus efficace (example here)

CAML peut être un peu difficile à manier, donc aussi intéressant de regarder le fournisseur Linq to Sharepoint, qui cache les détails de CAML loin de vous.

10

Mais si vous utilisez SP 2010 OM client, il fait jeter une exception si le fichier n'existe pas:

using(var clientContext = new ClientContext(site)) 
{ 
    Web web = clientContext.Web; 
    Microsoft.SharePoint.Client.File file = web.GetFileByServerRelativeUrl("/site/doclib/folder/filename.ext"); 
    bool bExists = false; 
    try 
    { 
     clientContext.Load(file); 
     clientContext.ExecuteQuery(); //Raises exception if the file doesn't exist 
     bExists = file.Exists; //may not be needed - here for good measure 
    } 
    catch{ } 

    if (bExists) 
    { 
      . 
      . 
    } 
} 
+0

L'exception est généralement causé en essayant de faire le contexte .Fichier de chargement). Si le fichier n'existe pas, vous ne pouvez pas charger l'objet complet de sorte que le test lui-même casse le résultat. L'exception ne sera pas levée si vous remplacez clientContext.Load (fichier) par clientContext.Load (fichier, f => f.Exists). –

Questions connexes