2010-04-29 5 views
4

Pourriez-vous m'aider pour l'ajout d'un fichier à la bibliothèque de documents Sharepoint? J'ai trouvé quelques articles dans .NET, mais je n'ai pas eu le concept complet de la façon d'accomplir cela.Téléchargement d'un fichier avec des métadonnées

J'ai téléchargé un fichier sans métadonnées en utilisant ce code:

if (fuDocument.PostedFile != null) 
       { 
        if (fuDocument.PostedFile.ContentLength > 0) 
        { 
         Stream fileStream = fuDocument.PostedFile.InputStream; 
         byte[] byt = new byte[Convert.ToInt32(fuDocument.PostedFile.ContentLength)]; 
         fileStream.Read(byt, 0, Convert.ToInt32(fuDocument.PostedFile.ContentLength)); 
         fileStream.Close(); 


         using (SPSite site = new SPSite(SPContext.Current.Site.Url)) 
         { 
          using (SPWeb webcollection = site.OpenWeb()) 
          { 
           SPFolder myfolder = webcollection.Folders["My Library"]; 
           webcollection.AllowUnsafeUpdates = true; 
           myfolder.Files.Add(System.IO.Path.GetFileName(fuDocument.PostedFile.FileName), byt); 

          } 
         } 
        } 
       } 

Ce code fonctionne bien comme il est, mais je dois télécharger un fichier avec des métadonnées. Aidez-moi s'il vous plaît en éditant ce code si c'est possible. J'ai créé 3 colonnes dans ma bibliothèque de documents.

Répondre

15

SPFolder.Files.Add retourne un objet SPFile

SPFile.Item retourne un objet SPListItem

Vous pouvez ensuite utiliser SPListItem [ "FieldName"] pour accéder à chaque champ (voir en bas de lien SPListItem)

donc l'ajout de cette dans votre code (ceci n'est pas testé, mais vous devriez avoir l'idée)

SPFile file = myfolder.Files.Add(System.IO.Path.GetFileName(document.PostedFile.FileName); 
SPListItem item = file.Item; 
item["My Field"] = "Some value for your field"; 
item.Update() 
+1

>> Merci beaucoup de moi aussi !!! – kevin

8

Il y a aussi une surcharge où vous pouvez envoyer une hashtable avec les métadonnées que vous voulez ajouter. Par exemple:

Hashtable metaData = new Hashtable(); 
metaData.Add("ContentTypeId", "some CT ID"); 
metaData.Add("Your Custom Field", "Your custom value"); 

SPFile file = library.RootFolder.Files.Add(
        "filename.fileextension", 
        bytearray, 
        metaData, 
        false); 
+0

Nice - Je ne m'étais pas rendu compte que vous pouviez le faire, j'avais supposé que c'était seulement les champs de métadonnées intégrés (_vti *) – Ryan

Questions connexes