Il documento da GUID
-
16-10-2019 - |
Domanda
mi manca qualcosa che deve essere così semplice che non è nemmeno la pena chiedere ... ma ho un ID oggetto (GUID) ... Come faccio a capire il documento a cui punta?
Per esempio io ho un GUID di 137DA01F-9AFD-5d9d-80C7-02AF85C822A8
e necessità di sapere quali file / URL a cui punta.
Soluzione
Se si conosce lo SPWeb ma non la raccolta documenti, è possibile utilizzare SPWeb.GetFile
:
SPFile file = web.GetFile(guid);
Altri suggerimenti
caso più semplice
Si consideri a sapere che il documento è memorizzato in standard "Documenti Condivisi" libreria dal modello di sito del team, è necessario utilizzare questo codice:
var library = web.GetListFromUrl("http://site/Shared%20Documents/Forms/AllItems.aspx");
var file = library.Items[new Guid("137DA01F-9AFD-5d9d-80C7-02AF85C822A8")].File;
// file.Url - site-relative url of the file
// file.OpenBinary() - get file contents (returns byte[])
riferimenti MSDN:
- SPListItemCollection.Item (Guid)
- SPFile.OpenBinary (con codice di esempio)
Libreria con le cartelle
Nel caso più complesso, quando si dispone di alcune cartelle nella libreria di documenti, probabilmente il modo migliore sarà quello di utilizzare la query CAML per questo scopo:
var query = new SPQuery();
query.ViewAttributes = "Scope=\"Recursive\"";
query.View =
@"<Where>
<Eq>
<FieldRef Name=\"UniqueId\">
<Value Type='Text'>137DA01F-9AFD-5d9d-80C7-02AF85C822A8</Value>
</Eq>
</Where>";
var items = library.GetItems(query);
sconosciuto biblioteca
Se ancora non si sa in quale libreria il file viene memorizzato, si dovrebbe passare attraverso tutte le biblioteche del sito:
foreach (var library in web.Lists)
{
if (!library.Hidden && library is SPDocumentLibrary)
{
// ... try to get the file and so on
}
}
documento ID
Inoltre, si dovrebbe sicuramente letto sulla funzione ID dei documenti, che consente di fare riferimento a un documento da qualsiasi luogo:
. Nota: il Guid, naturalmente, non è un ID di documento
C'è la href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.getitembyuniqueid.aspx"> SPList.GetItemByUniqueId funzione
Se si utilizza SharePoint 2010, un'occhiata alla funzionalità ID documento (che attribuisce un ID univoco per un elemento della lista e quindi utilizza Cerca di trovare la voce). A seconda delle proprie esigenze, si potrebbe considerare l'implementazione di "FindItemInSiteCollectionByUniqueId" utilizzando un approccio simile al documento ID, rendendo il un GUID gestito proprietà e la conduzione di una ricerca tramite codice.