lo primero que necesitamos es hacer una referencia de los servicios que se usan para Sharepoint estos servicios son:
– http://MisitioSharepoint/_vti_bin/copy.asmx // CopySoap
– http://MisitioSharepoint/_vti_bin/Lists.asmx // ListsSoap
Así quedaría entonces nuestro método para guardar archivos.
//Modo de autenticacion del servicio
string ModoAutenticacion= "Digest";
string fileName = "ArchivoPrueba.txt";
string User = "Usuario_Sharepoint";
string PassWord = "Pas123";
byte[] file = null; // la información del archivo que vamos a subir
using (CopySoapClient client = new CopySoapClient())
{
// enviamos las credenciales para autenticarse
NetworkCredential cred = new NetworkCredential(User, PassWord);
if (ModoAutenticacion== "Digest")
{
client.ClientCredentials.HttpDigest.ClientCredential = cred;
client.ClientCredentials.HttpDigest.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}
if (ModoAutenticacion== "Windows")
{
client.ClientCredentials.Windows.ClientCredential = cred;
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}
client.Open();
string destinationUrl = "http://MisitioSharepoint/"+ filename;
string[] destinationUrls = { destinationUrl };
FieldInformation i1 = new FieldInformation { DisplayName = "Title",
InternalName = "Title", Type = FieldType.Text, Value = filename };
FieldInformation[] info = { i1 };
CopyResult[] result;
byte[] data = file;
uint ret = client.CopyIntoItems(filename,destinationUrls,info,data,out result);
if (result != null && result.Length > 0 && result[0].ErrorCode != 0)
{
Inforesult.Errors = result[0].ErrorMessage;
}
client.Close();
}
Como ven es muy fácil crear el archivo en el sitio de sharepoint ahora para eliminar el archivo solo necesitamos esto:
string ModoAutenticacion= "Digest";
string fileName = "ArchivoPrueba.txt";
string User = "Usuario_Sharepoint";
string PassWord = "Pas123";
string LibraryName= "Papeles";
strin url = "http://MisitioSharepoint/";
using (ListsSoapClient client = new ListsSoapClient())
{
NetworkCredential cred = new NetworkCredential(User, PassWord);
if (ModoAutenticacion == "Digest")
{
client.ClientCredentials.HttpDigest.ClientCredential = cred;
client.ClientCredentials.HttpDigest.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}
else if (ModoAutenticacion == "Windows")
{
client.ClientCredentials.Windows.ClientCredential = cred;
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}
string strBatch = "" +
"1" +
"{0}";
strBatch = string.Format(strBatch, url);
XmlDocument xmlDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement exBatch = xmlDoc.CreateElement("Batch");
exBatch.SetAttribute("OnError", "Continue");
exBatch.InnerXml = strBatch;
var ex = exBatch.ToXElement();
var result = client.UpdateListItems(LibraryName, ex);
}
Por ultimo necesitaremos este metodo para transformar nuestro XML a XElement
public static class ExtensionMethods
{
public static XElement ToXElement(this XmlElement xml)
{
XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.ImportNode(xml, true));
return XElement.Parse(doc.InnerXml);
}
}
Como ven es muy fácil subir y eliminar archivos en sharepoint, alguna duda la pueden comentar o si conocen algun otro método.