Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

Upload di un documento su MOSS07 con proprietà

Il codice seguente esegue l'upload di un documento su MOSS 07.
Le parti interessanti del codice proposto sono 2:

  1. Il codice imposta anche le proprietà del documento in un'unica operazione, quindi generando un'unica versione del documento (nel caso di versionamento attivato). Da notare che la stessa cosa non era possibile nel modello ad oggetti di SharePoint 2003.
  2. I valori delle proprietà sono impostati in base al nome visualizzato della proprietà stessa, per cui il codice si preoccupa di trovare il nome interno e convertirlo nel formato opportuno.

 

Imports Microsoft.SharePoint

 

Sub
UploadFile()
 
' Recupera l'oggetto SPSite
  Dim objSite As New SPSite("http://myServer/MyWebSite/"
)
  ' Recupera l'oggetto SPWeb
  Dim objWeb As
SPWeb = objSite.OpenWeb()
  ' Recupera l'oggetto SPDocumentLibrary
  Dim objDocLib As SPDocumentLibrary = objWeb.Lists("MyDocLib"
)
  ' Predispone una Hashtable per le proprietà del documento
  Dim properties As New
Hashtable
  ' Predispone una variabile per il nome della proprietà corrente
  Dim propertyName As
String
  ' Recupera il profilo della document library
  For i As Integer = 0 To
objDocLib.Fields.Count - 1
    Select Case
objDocLib.Fields(i).Title
      Case
"Proprietà 1"
        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà
        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)
        ' Aggiunge la coppia (nome XML, valore) per la proprietà
        properties.Add(propertyName, "Valore 1"
)
      Case
"Proprietà 2"
        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà
        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)
        ' Aggiunge la coppia (nome XML, valore) per la proprietà
        properties.Add(propertyName, "Valore 2"
)
      Case
"Proprietà 3"
        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà
        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)
        ' Aggiunge la coppia (nome XML, valore) per la proprietà
        properties.Add(propertyName, "Valore 3"
)
    End
Select
  Next
i
  ' Recupera l'oggetto SPFolder corrispondente alla root folder della document library
  Dim objFolder As
SPFolder = objDocLib.RootFolder
  ' Legge il documento
  Dim fStream As IO.FileStream = IO.File.OpenRead("c:\myFolder\myDoc.doc"
)
  Dim fContent(fStream.Length - 1) As
Byte
  fStream.Read(fContent, 0, fStream.Length)
  ' Aggiunge il documento con le proprietà
  objFolder.Files.Add("http://myServer/MyWebSite/MyDocLib/myDoc.doc", fContent, properties, True
)
  ' Chiude lo stream e ne fa la Dispose
  fStream.Close()
  fStream.Dispose()
  ' Esegue le Dispose degli oggetti relativi a Sharepoint
  objWeb.Dispose()
  objSite.Dispose()
End Sub

Print | posted on martedì 23 ottobre 2007 02:11 | Filed Under [ MOSS07 Tips .Net ]

Powered by:
Powered By Subtext Powered By ASP.NET