Put Document

14/04/2008 - 09:35 por Berrocoso | Informe spam
Hola,

Estoy usando las librerías de sharePoint 2003 para subir un fichero a
un site de sharepoint desde una aplicación .NET 2.0. estoy usando el
método "put document" y realmente funciona bien, pero cuando el nombre
del fichero lleva alguna tilde o caracteres como "Ñ" o "[]" etc... me
salta una excepción diciendo que se perdió la conexión. Despues de
varias pruebas realizadas he llegado a la conclusión de que si el
nombre del fichero lleva alguno de estos caracteres no me lo sube.

Si utilizo la codificación UTF-8 el error es: "Se perdió la conexión
con el servidor"
Si utilizo la codificación Unicode el error es:
"System.Net.WebException: Error en el servidor remoto: (401) No
autorizado"

El código es el siguiente:
public void PutDocument(string uri, byte[] bFichero, string metaInfo)
{
Uri myUri = new Uri(uri);
string webUrl, fileUrl;
UrlToWebUrl(uri, out webUrl, out fileUrl);

if (null == metaInfo)
metaInfo = "";

string postBody = String.Format(
"method=put
+document&service_name=&document=[document_name={0};meta_info=[{1}]]&put_option=overwrite&comment=&keep_checked_out=false
",
HttpUtility.UrlEncode(fileUrl,
System.Text.Encoding.Unicode),
metaInfo);

UnicodeEncoding encoding = new UnicodeEncoding();
MemoryStream stream = new MemoryStream();

stream.Write(encoding.GetBytes(postBody), 0,
postBody.Length);
stream.Write(bFichero, 0, bFichero.Length);

SendRequest(myUri.GetLeftPart(UriPartial.Authority) +
webUrl + "/_vti_bin/_vti_aut/author.dll", stream.GetBuffer(),
stream.Length);
stream.Close();
}

Si alguien se le ocurre algo, se lo agradecería

Un Saludo
 

Leer las respuestas

#1 Elecktrus
14/04/2008 - 20:31 | Informe spam
Hola, Berrocoso:
Es una restriccion de sharepoint 2003 que no se puede evitar. Recuerda que
hasta hace muy poco, las url y dominios de internet no podian contener la
letra ñ, y a Sharepoint le pasa lo mismo.
Lo mas facil es que hagas un replace y quites del nombre del fichero los
caracteres no validos (o los sustituyas por otros. Ej: españa -> espania)

"Berrocoso" wrote:

Hola,

Estoy usando las librerías de sharePoint 2003 para subir un fichero a
un site de sharepoint desde una aplicación .NET 2.0. estoy usando el
método "put document" y realmente funciona bien, pero cuando el nombre
del fichero lleva alguna tilde o caracteres como "Ñ" o "[]" etc... me
salta una excepción diciendo que se perdió la conexión. Despues de
varias pruebas realizadas he llegado a la conclusión de que si el
nombre del fichero lleva alguno de estos caracteres no me lo sube.

Si utilizo la codificación UTF-8 el error es: "Se perdió la conexión
con el servidor"
Si utilizo la codificación Unicode el error es:
"System.Net.WebException: Error en el servidor remoto: (401) No
autorizado"

El código es el siguiente:
public void PutDocument(string uri, byte[] bFichero, string metaInfo)
{
Uri myUri = new Uri(uri);
string webUrl, fileUrl;
UrlToWebUrl(uri, out webUrl, out fileUrl);

if (null == metaInfo)
metaInfo = "";

string postBody = String.Format(
"method=put
+document&service_name=&document=[document_name={0};meta_info=[{1}]]&put_option=overwrite&comment=&keep_checked_out=false
",
HttpUtility.UrlEncode(fileUrl,
System.Text.Encoding.Unicode),
metaInfo);

UnicodeEncoding encoding = new UnicodeEncoding();
MemoryStream stream = new MemoryStream();

stream.Write(encoding.GetBytes(postBody), 0,
postBody.Length);
stream.Write(bFichero, 0, bFichero.Length);

SendRequest(myUri.GetLeftPart(UriPartial.Authority) +
webUrl + "/_vti_bin/_vti_aut/author.dll", stream.GetBuffer(),
stream.Length);
stream.Close();
}

Si alguien se le ocurre algo, se lo agradecería

Un Saludo

Preguntas similares