Recentemente ho consigliato ad un cliente di utilizzare la possibilità di SharePoint di creare e scrivere in folder invece che in liste, visto che aveva la necessità di memorizzare solo dei dati (immagini) volanti e non permanenti, che dopo poco tempo dovevano essere rimossi. Il folder in questione è stato creato nella site collection per mezzo di una semplice feature che caricava un file di testo nel foder stesso consentendone la creazione. In socondo luogo abbiamo scritto il codice per accedere al foleder ed aggiornarne il contenuto.

Il codice in questione è il seguente:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb elevatedWeb = elevatedSite.OpenWeb(SPContext.Current.Web.ID))
{
//creo un’istanza di SPfolder che mi aggancia alla cartella creata all’attivazione della FEATURE
SPFolder <NomeOggettoSPFolder> = elevatedSite.RootWeb.Folders["<NomeDellaFolder>"];
elevatedWeb.AllowUnsafeUpdates = true;
//aggiungo il file alla cartella temporaneamente
<NomeOggettoSPFolder>.Files.Add(FileUpload1.FileName, FileUpload1.FileBytes, true);
<NomeOggettoSPFolder>.Update();
elevatedWeb.AllowUnsafeUpdates = false;
}
}

});

E’ importante notare che per aggirare i problemi di sicurezza si è scelti di elevare i diritti di esecuzione e per farlo correttamente si è dovuto creare una Site Collection clone dell’originale e un Web Site clone dell’originale in modo che il contesto risultasse con gli opportuni privilegi. Il resto del codice si commenta da sè, l’unica cosa che posso far notare è l’utilizzo di un controllo .Net per l’upload del file, che nel nostro caso si chiama FileUpload1.

Alla prossima.