Principales respuestas
Subir documento a Sharepoint desde aplicación Windows

Pregunta
-
Hola!
Estoy atascado a la hora de subir un documento a una biblioteca desde una aplicación windows
He de decir que soy bastante "novato" como programador y es más que posible que esté metiendo la pata hasta el fondo en alguna parte del código, de momento, gracias a la ayuda obtenida por aquí y a través de los web services de sharepoint he conseguido montar un explorador del sitio y ahora estoy intentando subir un archivo a una lista (biblioteca)
Este es el código que utilizo, pero me el siguiente fallo (intento subir el mismo archivo a 2 listas dentro del sitio sharepoint):
'Microsoft.SharePoint.SoapServer.SoapServerException'
En el tema de las rutas... se las estoy metiendo ahora a "capón" (ya digo, estoy en "pruebas" y primero quiero que funcione y luego ya me liaré a que recoja las rutas en condiciones)
Este es el código:
Dim myCopyService As New CopyWebService.Copy()
myCopyService.Credentials = _
System.Net.CredentialCache.DefaultCredentials
Dim copySource As String = Label2.Text ' recoge ruta donde se encuentra el archivo Ejemplo.txt C:\Ejemplo.txt
Dim copyDest As String() = _
{"http://AAAA/sitios/BBBB/Biblio1/Ejemplo.txt", _
"http://AAAA/sitios/BBBB/Biblio1/prueba/Ejemplo.txt"}
Dim myFieldInfo As New CopyWebService.FieldInformation
Dim myFieldInfoArray As CopyWebService.FieldInformation() = {myFieldInfo}
Dim myByte As Byte
Dim myByteArray() As Byte = {myByte}
Dim myGetUint As System.UInt32 = myCopyService.GetItem(copySource, myFieldInfoArray, myByteArray)
Dim myCopyResult1 As New CopyWebService.CopyResult()
Dim myCopyResult2 As New CopyWebService.CopyResult()
Dim myCopyResultArray As CopyWebService.CopyResult() = {myCopyResult1, myCopyResult2}
Try
Dim myCopyUint As System.UInt32 = myCopyService.CopyIntoItems(copySource, copyDest, _
myFieldInfoArray, myByteArray, myCopyResultArray)
If myCopyUint = 0 Then
Dim idx As Integer = 0
Dim myCopyResult As CopyWebService.CopyResult
For Each myCopyResult In myCopyResultArray
Dim opString As String = (idx + 1).ToString()
If myCopyResultArray(idx).ErrorMessage Is Nothing Then
MessageBox.Show(("Copy operation " + opString + _
"completed." + ControlChars.Cr + _
ControlChars.Lf + "Destination: " + _
myCopyResultArray(idx).DestinationUrl))
Else
MessageBox.Show(("Copy operation " + opString + _
"failed." + ControlChars.Cr + _
ControlChars.Lf + "Error: " + _
myCopyResultArray(idx).ErrorMessage + _
ControlChars.Cr + ControlChars.Lf + "Code: " + _
myCopyResultArray(idx).ErrorCode))
End If
idx += 1
Next myCopyResult
End If
Catch exc As Exception
Dim idx As Integer = 0
Dim myCopyResult As CopyWebService.CopyResult
For Each myCopyResult In myCopyResultArray
idx += 1
If myCopyResult.DestinationUrl Is Nothing Then
Dim idxString As String = idx.ToString()
MessageBox.Show("Copy operation " + idxString + _
" failed." + ControlChars.Cr + ControlChars.Lf + _
"Description: " + exc.Message, "Exception", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Next myCopyResult
End Try
End Sub
He podido observar que myFieldInfoArray y MyByteArray no recogen nada :S (Nothing) y no se exactamente como meterle mano a esto (es prácticamente el mismo código que en el ejemplo que viene en el msdn del WebService Copy.
Agradecería cualquier tipo de ayuda, a sabiendas que el que realmente falla soy yo y mi prácticamente nula experiencia. Aún así, tengo ganas de aprender y en ello estoy.
Lo dicho, gracias de antemano y saludos
Respuestas
-
Hola Agus,
Revisa estos enlaces que tienen varios ejemplos que te ayudarán para hacer lo que necesitas:
- http://oricode.wordpress.com/2008/07/03/upload-a-file-to-sharepoint-2007-using-webservices-with-a-specific-content-type/
- http://www.codeproject.com/KB/sharepoint/File_Shunter.aspx
- http://www.dotnetcurry.com/ShowArticle.aspx?ID=297
- http://www.codeguru.com/csharp/csharp/cs_webservices/tutorials/article.php/c8805
Saludos!
- Marcado como respuesta Agus Sánchez jueves, 12 de mayo de 2011 11:13
Todas las respuestas
-
Hola Agus,
Revisa estos enlaces que tienen varios ejemplos que te ayudarán para hacer lo que necesitas:
- http://oricode.wordpress.com/2008/07/03/upload-a-file-to-sharepoint-2007-using-webservices-with-a-specific-content-type/
- http://www.codeproject.com/KB/sharepoint/File_Shunter.aspx
- http://www.dotnetcurry.com/ShowArticle.aspx?ID=297
- http://www.codeguru.com/csharp/csharp/cs_webservices/tutorials/article.php/c8805
Saludos!
- Marcado como respuesta Agus Sánchez jueves, 12 de mayo de 2011 11:13
-
Muchas gracias de nuevo Juan Carlos
El código que puse arriba (ahora lo se, antes no) es para copiar 1 documento desde un sitio sharepoint a 2 listas distintas de otro sitio sharepoint diferente.
He ojeado los links que has puesto y creo que podré conseguir lo que busco.
Muchas gracias de nuevo, así da gusto.
Agus.
-
Estupendo Agus,
De todos modos una cosa, para temas de desarrollo tenemos otro foro en castellano en el que creo que irían mejor este tipo de cuestiones ya que a él acceden normalmente desarrolladores. Te dejo la Url del mismo: http://social.msdn.microsoft.com/Forums/es-ES/mossdeves/threads
Saludos!
-