Open JLLMNCHR opened 2 years ago
Hola Primero disculpas porque no me ha dado tiempo a responder a la anterior pregunta, tengo pendiente revisar los nombres de parámetro crear una documentación más clara. Esto puede implicar un cambio en la firma de alguno de los métodos.
El error 403 es un error de permisos (prohibido, es decir, el servicio reconoce al usuario pero éste no tiene permisos para realizar la operación solicitada).
Supon que tenemos la instancia xxx.sharepoint.com de sharepoint online, el usuario @.***, el pass es abcd1234 para ese usuario y el sitio al que pertenece la librería a la que subir un documento se llama panxoliñas, siendo la librería LibreriaEnSitio. Con esos datos el ejemplo sería
PLGSharepointClient client = new ***@***.***",
"abcd1234", xxxsharepoint.com", "/sites/panxoliñas"); JSONObject result = client.uploadFile("LibreriaEnSitio", (Resource) new FileSystemResource(new File("/rutaaarchivoenlocal.ext")), new JSONObject());
Si el archivo es muy grande, se puede utilizar el método uploadBigFile, donde el úitimo parámetro seria el chunk size a utilizar (tamaño de bloques), por ejemplo 1024*1024. El tema de los parámetros tengo pendiente, como te comento, darle una pequeña vuelta para mejorarlo, tanto en nomenclatura como en la documentación, unificando la nomenclatura y simplificando el uso.
Saludos, disculpa por la demora en la respuesta pero tengo unos días con bastante lío en el trabajo
El lun, 7 feb 2022 a las 9:03, JLLMNCHR @.***>) escribió:
Kiko,
Suponiendo un dominio XYZ.sharepoint.com http://XYZ.sharepoint.com, un 'site' ABCDE, con mi usuario @. @.>* contraseña **, he sido capaz de subir manualmente (desde web) un documento a la ruta ' Documentos/General/INFO-Backup'. Tal como muestra la siguiente imagen:
[image: image] https://user-images.githubusercontent.com/53475407/152748337-8af8390f-cd17-4bad-a8d5-7b2b6026089e.png
Sin embargo, no he sido capaz de subir un documento programáticamente. Recibiendo un 403 forbidden.
result = wrapper.uploadFile("/sites/ABCDE/Documentos/General/INFO-Backup/", resource, metadata); //403 Forbidden
¿Sabes si es que estoy pasando mal el parámetro 'folder', o si debo llevar a cabo alguna acción de configuración/permisos desde la web?
Gracias de antemano!
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KGKSZVR3VTKV242DSDUZ54GFANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.Message ID: @.***>
Gracias, sigo probando. Es fichero pequeño. La clave por mi parte, creo que es interpretar lo que tu llamas "LibreriaEnSitio", para confirmar si es "/sites/ABCDE/Documentos/General/INFO-Backup/". Y confirmar el tema de los permisos, sobre ese "LibreriaEnSitio". Saludos
En el caso de querer subirlo a esa carpeta JSONObject result = client.uploadFile("Documentos/General/INFO-Backup", (Resource) new FileSystemResource(new File("/rutaaarchivoenlocal.ext")), new JSONObject());
Si el usuario con el que se realiza la autenticación tiene permisos de creación y la carpeta existe (si no existe habria que utilizar el método createFolder para crear la estructura, de forma similar a como se hace en un FS local)
El lun, 7 feb 2022 a las 12:26, JLLMNCHR @.***>) escribió:
Gracias, sigo probando. Es fichero pequeño. La clave por mi parte, creo que es interpretar lo que tu llamas " LibreriaEnSitio", para confirmar si es " /sites/ABCDE/Documentos/General/INFO-Backup/". Y confirmar el tema de los permisos, sobre ese "LibreriaEnSitio". Saludos
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41#issuecomment-1031360584, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KCL26HLQC7TMRMC6T3UZ6T5BANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Con "Documentos/General/INFO-Backup" sigue dando 403 Forbidden; pese a que la carpeta existe y con ese mismo usuario si puedo subir documentos arrastrando desde la web. (No sé, quizás halla que habilitar alguna configuración desde Sharepoint). Gracias!
Ese error 403 es de permisos del usuario en la librería. Esto puede ser porque esté rota la herencia de permisos en la carpeta, que el usuario no tenga permisos de escritura, o algo similar, Puedes realizar la prueba contra la carepta Documentos (que seria en este caso la librería sharepoint), si esto va bien el siguiente paso que yo daría sería probar en el primer nivel de la subcarpeta, si va bien en el segundo, hasta detectar donde se dejan de tener permisos. ¿El proceso se está conectando con el mismo usuario con el que has accedido desde la web?
El lun, 7 feb 2022 a las 12:43, JLLMNCHR @.***>) escribió:
Con "Documentos/General/INFO-Backup" sigue dando 403 Forbidden; pese a que la carpeta existe y con ese mismo usuario si puedo subir documentos arrastrando desde la web. (No sé, quizás halla que habilitar alguna configuración desde Sharepoint). Gracias!
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41#issuecomment-1031375500, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KFF6IKISLTBYJ3Y2JTUZ6V6JANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Si uso uploadFile("Documentos", ... me sigue dando 403. Mientras que desde Web si que puedo subir un fichero:
El usuario es el mismo en ambos casos
Y estas utilizando el mismo usuario para conectarte desde la web que el usuario cno el que se realiza el login desde código?
El lun, 7 feb 2022 a las 12:55, JLLMNCHR @.***>) escribió:
Si uso uploadFile("Documentos", ... me sigue dando 403. Mientras que desde Web si que puedo subir un fichero:
[image: image] https://user-images.githubusercontent.com/53475407/152783521-5f5c3f95-512b-4d7e-b4ed-26b6ee2a89ec.png
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41#issuecomment-1031384962, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KEUXADEWSJAEMJQKKLUZ6XJPANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Si si, el usuario es el mismo en ambos casos
Podrías enviarme por privado a mi correo @.*** el código que utlizas? sin poder verlo no tengo forma de saber donde puede estar el problema y lanzando tests contra una instancia de sharepoint online no reproduzco el problema (no necesito credenciales ni nada asi ya que es para probar contra una instancia de sharepoint online sober la que no tengo el problema)
El lun, 7 feb 2022 a las 13:01, JLLMNCHR @.***>) escribió:
Si si, el usuario es el mismo en ambos casos
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41#issuecomment-1031390216, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KAXJMHHYNCKSZO7SSLUZ6YCRANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Atención! acabo de conseguir subir un documento, TEST.txt, pero a una nueva 'Biblioteca de documentos', que he llamado 'Lomin'. Con el siguiente código:
result = wrapper.uploadFile("Lomin", (Resource) new FileSystemResource(new File("C:/logs/TEST.txt")), new JSONObject());
Voy a pedir a la gente de Sharepoint si pueden volver a crear esa 'Biblioteca de documentos' llamada 'Documentos', a ver si es que, cuando la crearon la dieron permisos 'raros'.
Eso indica que el problema es algo de permisos (igual que Documentos lo haya creado un cliente de OneDrive y que desde la web se tenga información sobre ésto y se utilicen las APIs de OneDrive y no de Sharepoint. Si es posible una prueba sería la de eliminar y volver a crear esta librería.
Si la necesitas en OneDrive puedes sincronizarla desde sharepoint en tu OneDrive después.
El lun, 7 feb 2022 a las 13:16, JLLMNCHR @.***>) escribió:
Atención! acabo de conseguir subir un documento, TEST.txt, pero a una nueva 'Biblioteca de documentos', que he llamado 'Lomin'. Con el siguiente código:
result = wrapper.uploadFile("Lomin", (Resource) new FileSystemResource(new File("C:/logs/TEST.txt")), new JSONObject());
[image: image] https://user-images.githubusercontent.com/53475407/152786391-19a36b75-3d78-473d-92c8-834be11f4653.png
— Reply to this email directly, view it on GitHub https://github.com/kikovalle/PLGSharepointRestAPI-java/issues/41#issuecomment-1031403865, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEXV7KHOX2AYBDJHATYJAF3UZ6ZZXANCNFSM5NWWC3NQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Gracias Kiko!!, vamos a ir haciendo pruebas, a ver si acotamos qué es necesario para que uploadFile no devuelva el 403
Kiko,
Suponiendo un dominio XYZ.sharepoint.com, un 'site' ABCDE, con mi usuario panchovilla@hhhh.com contraseña **, he sido capaz de subir manualmente (desde web) un documento a la ruta 'Documentos/General/INFO-Backup'. Tal como muestra la siguiente imagen:
Sin embargo, no he sido capaz de subir un documento programáticamente. Recibiendo un 403 forbidden.
result = wrapper.uploadFile("/sites/ABCDE/Documentos/General/INFO-Backup/", resource, metadata); //403 Forbidden
¿Sabes si es que estoy pasando mal el parámetro 'folder', o si debo llevar a cabo alguna acción de configuración/permisos desde la web?
De los logs extraje:
_
POST request for "https://XYZ.sharepoint.com/sites/ABCDE/_api/web/GetFolderByServerRelativeUrl('/sites/ABCDE/Documentos/General/INFO-Backup/')/Files/add(url='TEST.txt',overwrite=true)" resulted in 403 (Forbidden); invoking error handler
_Gracias de antemano!