【问题标题】:Python Upload Files to Sharepoint using ShareplumPython 使用 Shareplum 将文件上传到 Sharepoint
【发布时间】:2021-08-24 21:35:25
【问题描述】:

我正在使用这个共享很多的代码尝试使用 Shareplum 将文件上传到 Sharepoint 到 Shared Documents 文件夹中。

import requests
from shareplum import Office365

# Set Login Info
username = 'my.email@address.com'
password = 'myverifiedapppassword'
site_name = 'mysite'
base_path = 'https://xxxxxxxx.sharepoint.com'
doc_library = 'Shared%20Documents'
file_name = "hellotest.txt" #when your file in the same directory

# 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'})

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']})

# Upload file
with open(file_name, 'rb') as file_input:
    try:
        response = session.post(
            url=base_path + "/sites/" + site_name + f"/_api/web/GetFolderByServerRelativeUrl('" + doc_library + "')/Files/add(url='"
            + file_name + "',overwrite=true)",

            data=file_input)
        print("response: ", response.status_code) #it returns 200
        if response.status_code == '200':
            print("File uploaded successfully")
    except Exception as err:
        print("Something went wrong: " + str(err))

print('File Uploaded Successfully')

运行代码时出现问题....我总是得到一个回溯和一个关键错误,如下所示:

Traceback(最近一次调用最后一次): 文件“S:\upload.py”,第 22 行,在 session.headers.update({'X-RequestDigest': response.headers['X-RequestDigest']}) getitem 中的文件“C:\Python39\lib\site-packages\requests\structures.py”,第 54 行 返回 self._store[key.lower()][1] KeyError: 'x-requestdigest'

在第 22 行中,与 x-requestdigest 相关的事情无法正常工作,但我无法弄清楚是什么。 任何提示将不胜感激!!!

谢谢

【问题讨论】:

    标签: python sharepoint upload shareplum


    【解决方案1】:

    我已经尝试了下面的代码,它正在工作。

    from shareplum import Office365
    from shareplum import Site
    from shareplum.site import Version
    
    #Logging info
    server_url = "https://example.sharepoint.com/"
    site_url = server_url + "sites/my_site_name"
    Username = 'myusername'
    Password = 'mypassword'
    Sharepoint_folder = 'Shared Documents'
    fileName = 'myfilename'
    
    def file_upload_to_sharepoint(**context):
        authcookie = Office365(server_url, username = Username, password=Password).GetCookies()
        site = Site(site_url, version=Version.v365, authcookie=authcookie)
        folder = site.Folder(Sharepoint_folder)
        with open(fileName, mode='rb') as file:
            fileContent = file.read()
        folder.upload_file(fileContent, "filename.bin")
    
    file_upload_to_sharepoint()
    

    让我知道这是否也适合你。

    【讨论】:

    • 嗨拉贾克什米。感谢您提供替代代码。我收到返回错误 403,我认为这与身份验证有关。 ' 回溯(最近一次调用最后):文件“C:\Python39\lib\site-packages\shareplum\request_helper.py”,第 17 行,在 post response.raise_for_status() 文件“C:\Python39\lib\site- packages\requests\models.py",第 953 行,在 raise_for_status 中引发 HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://.sharepoint.com/sites //_vti_bin/'
    • 您好,请检查您的用户名是否已添加到 Sharepoint 站点。如果未添加,您将无法访问该网站。
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 2018-12-28
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多