es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al subir archivos a SharePoint usando office365-rest-api cuando el carácter ”%” está en el nombre del archivo.

Estoy utilizando la API de office365-rest-api para cargar archivos en SharePoint en línea, y todo funciona bien, excepto cuando el nombre de archivo contiene el carácter %. El nombre de archivo resultante en SharePoint tiene un ’25’ agregado. Entonces, si el nombre de archivo que estoy cargando es ‘First 50% of candidates.xls’, el nombre de archivo que termina en SharePoint en línea es ‘First 50%25 of candidates.xls’.

Mi código que está haciendo la carga es:

ctx=ClientContext(‘https://mycomp.sharepoint.com/sites/MySite/’).with_credentials(userCredentials)
SP_Location=”TheLibrary/TheFolder”
fileName=”First 50% of Candidates.xls”
path=”../../path/First 50% of Candidates.xls”
with open(path, ‘rb’) as content_file:
fileContent=content_file.read()
targetFolderUrl=ctx.web.ensure_folder_path(SP_Location).execute_query()
targetFile=targetFolderUrl.upload_file(fileName,fileContent)
ctx.execute_query()

¿Cómo puedo dar formato al nombre de archivo para que llegue a SharePoint sin adulterar?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para evitar la adición de ’25’ en nombres de archivo que contengan el carácter %, es necesario codificar el nombre de archivo utilizando la codificación de URL. En Python, puedes lograr esto utilizando la función urllib.parse.quote() para codificar el nombre de archivo antes de cargarlo a SharePoint.

    Aquí está una versión actualizada de tu código que incluye la codificación de URL:

    import urllib.parse
    
    ctx = ClientContext('https://mycomp.sharepoint.com/sites/MySite/').with_credentials(userCredentials)
    SP_Location = "TheLibrary/TheFolder"
    fileName = "First 50% of Candidates.xls"
    path = "../../path/First 50% of Candidates.xls"
    
    # codificar nombre de archivo utilizando codificación URL
    encodedFileName = urllib.parse.quote(fileName)
    
    with open(path, 'rb') as content_file:
        fileContent = content_file.read()
    targetFolderUrl = ctx.web.ensure_folder_path(SP_Location).execute_query()
    targetFile = targetFolderUrl.upload_file(encodedFileName, fileContent) # utilizar nombre codificado
    ctx.execute_query()
    

    Al codificar el nombre de archivo utilizando la codificación de URL, el carácter % será correctamente escapado y el nombre de archivo llegará a SharePoint sin estar alterado.

Comments are closed.