Technology Experience
.NET World

Uploadare un documento ad una Document Library di Sharepoint

Il sito http://enjoy.vivendobyte.net/igordamiani.it.reborn è un sito Sharepoint 2007.

All’interno di questo sito ho creato alcune liste, alcune pubbliche ed altre private. Tra queste ultime, ve ne è una in cui raccolgo rapportini e fatture che ovviamente devono rimanere privati. Ho voluto dare una marcia in più al mio RapportinoMaker, il software di cui ho parlato qua, per automizzare l’upload di documenti PDF (fatture) e documenti Excel (rapportini) su questa famigerata lista Sharepoint. Pensavo di dover lavorare con http e con NetworkCredentials, ma ho preso una strada diversa che voglio illustrare perchè può essere utile anche a voi.

Come giustamente mi ha fatto notare mio fratello, qualsiasi lista di Sharepoint è raggiungibile anche attraverso il classico Esplora Risorse. Ciò significa che, per esempio, posso raggiungere la mia Document Library andando al path di rete:

\enjoy.vivendobyte.netigordamiani.it.reborn<nome_lista><nome_folder>

Se ci siamo già autenticati, allora il folder si apre automaticamente, altrimenti appare la classica dialog che chiede username e password. Detto questo è facile dedurre che possiamo copiare un qualsiasi file usando la classica File.Copy(source, destination): nulla di strano.

Il vero problema è che quando non ci siamo autenticati, la chiamata a File.Copy solleva un’eccezione. E’ un problema che non ho risolto, ma ci ho girato attorno. Usando questa libreria, mappo il disco di rete su un drive locale (per esempio, Z:). La procedura di mapping del disco passa da un’autenticazione (username + password), quindi il problema è risolto.

Riassumendo, per l’upload di un file su una Document Library di Sharepoint 2007 faccio quanto segue:

  1. connetto il path remoto \enjoy.vivendobyte.netigordamiani.it.reborn sul drive locale Z:
  2. copia il file dal mio PC locale a Z:<nome_lista><nome_folder><nome_file>
  3. cancello il drive mappato Z:

Ecco un piccolo stralcio di codice per darvi qualche spunto:

static void Main(string[] args) { NetworkDrive nd = new NetworkDrive(); nd.LocalDrive = "Z:"; nd.Force = true; nd.PromptForCredentials = false; nd.SaveCredentials = true; nd.ShareName = @"\nome_dominio ome_sito_wss"; nd.MapDrive(USERNAME, PASSWORD); string remoteFile = @"Z: ome_lista ome_cartellapippo.txt"; File.Copy(@"D:Documentipippo.txt", remoteFile, true); nd.UnMapDrive(); }

Ho nascosto le informazioni sensibili. Le costanti USERNAME e PASSWORD contengono lo username e la password necessarie per loggarsi sul sito Sharepoint. Con la chiamata a MapDrive() connetto il network path, poi copio il file, poi sconnetto tutto.

Technorati Tags:

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.