Python загрузка файлов и папок на sharepoint - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь загрузить некоторые файлы (несколько файлов и папок) в sharepoint, и при запуске сценария у меня не возникает никаких ошибок, но я не могу, поэтому вижу мои файлы в sharepoint.

import requests
from shareplum import Office365

# get data from configuration
username = 'last.surname@tenant.com'
password = 'mypassword'
site_name = 'BI_odair'
base_path = 'https://tenant.sharepoint.com'
doc_library = 'data'

file_name = "links.txt"

# Obtain auth cookie
authcookie = Office365(base_path, username=username,
                       password=password).GetCookies()
session = requests.Session()
session.cookies = authcookie
session.headers.update({'user-agent': 'python_bite/v1'})
session.headers.update({'accept': 'application/json;odata=verbose'})


# perform the actual upload
with open(file_name, 'rb') as file_input:
    try:
        response = session.post(
            url=base_path + "/sites/" + site_name +
            "/_api/web/GetFolderByServerRelativeUrl('Shared%20Documents/" +
            doc_library+"')/Files/add(url='"
            + file_name + "',overwrite=true)",
            data=file_input)
    except Exception as err:
        print("Some error occurred: " + str(err))

URL-адрес моего ресурса: https://tenant.sharepoint.com/sites/BI_odair/Documents%20partages/Forms/AllItems.aspx?viewid=4e7fdfb9%2De84a%2D42cd%2Db537%2D0d2837ca92cc Это папка с именем Data, но я хотел загрузить свои файлы в папку root "/ Documents% 20partages"

У меня есть уже добавил это в мой код: { ссылка }

Заранее спасибо.

1 Ответ

0 голосов
/ 10 апреля 2020

«Общие документы» - это библиотека документов по умолчанию. Если вы хотите загрузить файл в пользовательскую библиотеку, измените путь, как показано ниже:

response = session.post(
        url=base_path + "/sites/" + site_name +
        "/_api/web/GetFolderByServerRelativeUrl("Documents%20partages")/Files/add(url='"
        + file_name + "',overwrite=true)",
        data=file_input)

Также вы можете посмотреть блог ниже: Загрузка файлов в SharePoint

//////// Обновлено

Я создал библиотеку документов и протестировал демонстрацию в вышеприведенном блоге, она хорошо работает. enter image description here

Ниже мой код:

import requests
from shareplum import Office365
from config import config

# get data from configuration
username = config['sp_user']
password = config['sp_password']
site_name = config['sp_site_name']
base_path = config['sp_base_path']
doc_library = config['sp_doc_library']

file_name = "test.csv"

# Obtain auth cookie
authcookie = Office365(base_path, username=username, password=password).GetCookies()
session = requests.Session()
session.cookies = authcookie
session.headers.update({'user-agent': 'python_bite/v1'})
session.headers.update({'accept': 'application/json;odata=verbose'})

# dirty workaround.... I'm getting the X-RequestDigest from the first failed call
session.headers.update({'X-RequestDigest': 'FormDigestValue'})
response = session.post( url=base_path + "/sites/" + site_name + "/_api/web/GetFolderByServerRelativeUrl('" + doc_library + "')/Files/add(url='a.txt',overwrite=true)",
                         data="")
session.headers.update({'X-RequestDigest': response.headers['X-RequestDigest']})

# perform the actual upload
with open( r'C:\Users\xxx\Documents\test.csv', 'rb+') as file_input:
    try: 
        response = session.post( 
            url=base_path + "/sites/" + site_name + "/_api/web/GetFolderByServerRelativeUrl('" + doc_library + "')/Files/add(url='" 
            + file_name + "',overwrite=true)",
            data=file_input)
    except Exception as err: 
        print("Some error occurred: " + str(err))

print('end...')

enter image description here

...