gpt4 book ai didi

python - 文件更新时的 Office365-REST-Python-Client 401

转载 作者:行者123 更新时间:2023-12-01 07:30:00 26 4
gpt4 key购买 nike

我终于克服了将文件上传到 SharePoint 的障碍,这使我能够在这里回答我自己的问题: Office365-REST-Python-Client Access Token issue

但是,我项目的重点是将元数据添加到正在上传的文件中,以便可以对其进行过滤。为了避免重复,我讨论的是 Sharepoints 文档库中的列信息。

理想情况下,我想在首先上传文件时执行此操作,但我对其余 API 的理解是,您必须先上传,然后使用 PUT 请求来更新其元数据。

Office365-REST-Python-Client 的 Git 中心的链接: https://github.com/vgrem/Office365-REST-Python-Client

这个库似乎是答案,但我能找到的最接近文档的是示例文件夹下。遗憾的是,更新文件元数据的示例不存在。我认为造成这种情况的部分原因在于唯一的选择是在列表项上使用 PUT 请求。

根据构建该库的 REST API 文档,项目的元数据必须作为列表的一部分进行操作。

用于文件上传的 REST API 文档: https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-folders-and-files-with-rest#working-with-files-by-using-rest

用于更新列表元数据的 REST API 文档: https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-lists-and-list-items-with-rest#update-list-item

有一个更新列表项的示例:'https://github.com/vgrem/Office365-REST-Python-Client/blob/master/examples/sharepoint/listitems_operations_alt.py ’但它返回 401。如果您在链接顶部查看我对自己问题的回答,您会看到我授予了该应用程序完全控制权。因此,未经授权的响应和停止让我完全不知道下一步该做什么。

毕竟,我的问题是:如何使用 Office365-REST-Python-Client 将文件上传到 Sharepoint 文档库并将元数据添加到其列信息?

亲切的问候丰富

最佳答案

Upload endpoint请求

url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Shared Documents')/Files/Add(url='file name', overwrite=true)
method: POST
body: contents of binary file
headers:
Authorization: "Bearer " + accessToken
X-RequestDigest: form digest value
content-type: "application/json;odata=verbose"
content-length:length of post body

可以转换为以下 Python 示例:

ctx = ClientContext(url, ctx_auth)

file_info = FileCreationInformation()
file_info.content = file_content
file_info.url = os.path.basename(path)
file_info.overwrite = True
target_file = ctx.web.get_folder_by_server_relative_url("Shared Documents").files.add(file_info)
ctx.execute_query()

文件上传后,它的元数据可以这样设置:

list_item = target_file.listitem_allfields # get associated list item 
list_item.set_property("Title", "New title")
list_item.update()
ctx.execute_query()

关于python - 文件更新时的 Office365-REST-Python-Client 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com