Il codice seguente esegue l'upload di un documento su MOSS 07.
Le parti interessanti del codice proposto sono 2:
- 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.
- 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