[Sharepoint 2010] Upload d’un fichier à partir du disque dur local

Afin de bien comprendre les dépendances entre les bibliothèques de documents ainsi que pour comprendre un peu le fonctionnement des différentes “couches” de SharePoint, les SPFolder, SPList, SPListItem et les types SPContentType, SPContentTypeId, j’ai décidé de commencer par faire une Wep Part d’Upload d’un fichier à partir d’un ordinateur local vers un Sharepoint Foundation 2010.

Je voulais rendre la Web Part la plus facile d’utilisation possible, elle se compose donc ainsi :

image

Avec une gestion des erreurs que nous verrons par la suite.

Le principe :

Une fois bien compris, le principe est super simple, il faut récupérer le fichier par le biais d’un objet “FileUpload” que vous trouverez dans votre Toolbox. Puis le stocker dans avec un objet Stream et enfin l’envoyer sur le serveur en précisant l’adresse complète (fichier compris).

Ce qui donne en C# :

image

destUrl correspond à l’Url de destination, soit le regroupement de l’adresse du serveur + le répertoire de destination ainsi que le nom complet du fichier.

image

Dans mon exemple, je pré rempli l’adresse du serveur SharePoint, que l’on obtient par :

 image

Au niveau de la DropDownList, je laisse le choix à l’utilisateur de choisir le répertoire de destination en lui proposant toutes les bibliothèques de documents du serveur.

image

Pour faire ça, il faut, lorsque l’on rempli la DropDownList, vérifier que le type de la librairie est bien de type document. Il existe différents types que l’on peut ainsi utiliser dans notre code, ce qui correspond à la classe SPBuiltInContentTypeId.

Pour informations :

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spbuiltincontenttypeid_fields.aspx

On commence par déclarer le type de document que l’on souhaite :

image

Puis j’ai créé une petit fonction qui retourne vrai ou faux en fonction d’une SPList que l’on lui passe en paramètre:

image

Il ne reste plus que remplir notre DropDownList, pour cela, nous allons parcourir la SPList correspondant au répertoire choisi grâce à un foreach:

image

Voilà qui n’affichera que les bibliothèques de type “document”.

Bonus:

J’ai également trouvé une petite fonction permettant de vérifier que le répertoire de destination existe et dans le cas contraire il crée une nouvelle bibliothèque afin d’ajouter le fichier. Ce qui peut être pratique dans le cas ou vous laissez l’utilisateur taper la bibliothèque de destination :

image

Vous appelez cette fonction juste avant le “site.Files.Add(destUrl, contents);” et vous êtes sûr que la bibliothèque de destination existe.

N’oubliez pas d’utiliser des try/catch afin de ne pas faire bugger la Web Part, en effet, dans mon cas, j’ai rajouté un label qui affiche l’erreur (fichier déjà existant, problème d’ouverture, etc..) en la parsant afin de ne garder qu’une partie du message d’erreur.

En action :

Etape 1: Choix du fichier.

image

Etape 2: On appui la flèche pour placer le fichier ou alors on le nomme directement dans la dernière textbox :

image

Etape 3: On upload le fichier.

image

En cas d’erreur:

image

Voilà pour ma première Web Part, son intérêt, en outre le faite de mieux comprendre le fonctionnement des bibliothèques, est également de pouvoir mieux gérer les uploads, en autorisant que certains types de fichiers par exemple en passant par du code.

Code Source:

Skydrive

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :