MISE À JOUR: Cela fonctionne mais il y a des limites importantes qui sont décrites dans les commentaires. Cela peut toujours être utile dans certaines circonstances.
MISE À JOUR 2: Dans mon projet actuel, les utilisateurs toujours téléchargement les documents. Comme un résultat, Je ne cours pas dans un problème où MS Word est en cours d'exécution et pense que le fichier a été renommé à ce sujet. J'ai couru dans un problème, « le fichier a été modifié par quelqu'un d'autre" et résolu ce problème par un indicateur de type simple sémaphore. Besoin de l'utilisateur de modifier un champ de données méta de sa valeur par défaut à autre chose. L'itemupdated() récepteur examine une valeur valide il avant d'effectuer réellement la renommer et depuis, Je n'ai eu aucun problème. Votre kilométrage peut varier.
J'ai une exigence client de changer le nom des fichiers téléchargés vers une bibliothèque de documents spécifique conforme à une convention de nommage particulière. L'API ne prévoit pas un changement de nom"()" méthode. Au lieu de cela, Nous utilisons "MoveTo(…)". Ici est un peu un minimum de code pour y parvenir:
public Substituez VOID ItemAdded(SPItemEventProperties propriétés) { SPFile f = propriétés.ListItem.File; f.MoveTo(propriétés.ListItem.ParentList.RootFolder.Url + « /xyzzy.doc"); f.Update(); } |
Le bit seulement délicat est les "Propriétés. ListItem.ParentList.RootFolder.Url". Le MoveTo() méthode requiert une URL. Que purée points chaîne me dans le dossier racine de ma bibliothèque de document actuel. Cela me permet d'éviter n'importe quel codage dur dans mon récepteur d'événements.
Il s'agit d'une version plus utile qui fait la même chose, mais affecte le nom du fichier à « Titre »:
public Substituez VOID ItemAdded(SPItemEventProperties propriétés) { DisableEventFiring(); // Attribuer le titre de ce point le nom du fichier lui-même. // NOTE: Cette cession doit avoir lieu avant que nous modifions le fichier lui-même. // Mise à jour de l'appel() sur le SPFile semble invalider les propriétés dans // certains sens. Mises à jour au titre de »" échoué jusqu'à ce que cela change (mise à jour et() appel) // ont été déplacés de la modification du nom de fichier. propriétés.ListItem[« Titre"] = propriétés.ListItem.File.Name; propriétés.ListItem.Update(); SPFile f = propriétés.ListItem.File; // Obtenir l'extension du fichier. Nous avons besoin que plus tard. chaîne spfileExt = Nouveau FileInfo(d.nom).Extension; // Renommez le fichier d'ID de l'élément de liste et utilisent l'extension de fichier pour garder // Cette partie intacte. f.MoveTo(propriétés.ListItem.ParentList.RootFolder.Url + "/" + propriétés.ListItem[« CARTE D'IDENTITÉ"] + spfileExt); // Commettre le déménagement. f.Update(); EnableEventFiring(); } |