Código fuente
Objetivos de esta nota:
- Ejemplificar una práctica interesante de uso de Web Services
- Proveernos de un modo de acceder a una Biblioteca de Documentos sin necesitar acceso al servidor
- Cerrar el último componente necesario como para integrar mis últimos envíos al blog en un paquete de generación automática de documentos en Sharepoint
Lo vamos a hacer mediante los siguientes pasos:
Generar la Web Reference en nuestro proyecto Visual Studio
Agregar una Web Reference
Utilizar el método de copia remota
Hecho esto vamos a poder utilizar CopyService para "copiar" el contenido de un archivo a una biblioteca Sharepoint.
Vamos a generar una clase que denominaremos Uploader y en ella un método CopyDocumentToLibrary que haga el trabajo necesario una vez que sepa qué documento procesar y dónde guardarlo dentro de Sharepoint.
Sencillo J
Y por comodidad entonces encabezaremos nuestra clase así:
using System;
using System.IO;
using WSClient.CopyService;
Apuntar a una Biblioteca de Documentos determinada
var copyObject = new Copy { Url = "http://moss:20001/_vti_bin/copy.asmx", UseDefaultCredentials = true };
byte[] myBinary = File.ReadAllBytes(fullFilePath);
string sourceUrl = @"http://moss:20001/doclibrary/" + itemName;
string[] destinationUrls = { sourceUrl };
Agregar alguna Metadata del documento
var metaDataTitle = new FieldInformation { DisplayName = "Item", InternalName = "Item", Type = FieldType.Text, Value = itemText };
var metaDataModifier = new FieldInformation { DisplayName = "Modified By", InternalName = "Editor", Type = FieldType.User, Value = "-1;#servername\\Mauricio" };
FieldInformation[] info = { metaDataTitle, metaDataModifier };
Y finalmente con toda la información preparada almacenamos en el servidor:
CopyResult[] result = { resultTest };
copyObject.CopyIntoItems(sourceUrl, destinationUrls, info, myBinary, out result);
Y eso es todo: en la librería doclibrary tendremos un nuevo documento.
Código fuente