繁体   English   中英

如何使用元数据将文件上传到 SharePoint

[英]how to upload file to SharePoint with Metadata using Python Rest API

我正在尝试使用 Python REST ZDB974238714CA8DE634ACE 将文件上传到 SharePoint 站点。 我可以成功地将文件上传到 SharePoint 站点,但是,我不确定,如何添加元数据以显示在站点下的列中。

示例:我正在上传 TEST.pdf 以及

metadata {"name" : "TEST.pdf", "Owner": "Mumbai", "TimeStamp": "3Aug2022 12:12", "pages": 34}

以下是将文件上传到 sharepoint 站点的代码。

from office365.runtime.auth.user_credential import UserCredential
from office365.sharepoint.client_context import ClientContext
from concurrent.futures import ThreadPoolExecutor, as_completed




def get_sharepoint_context_using_user():

    # Get sharepoint credentials
    sharepoint_url = "https:/{sitename}.sharepoint.com/sites/TEST"

    # Initialize the client credentials
    user_credentials = UserCredential("username", "password")

    # create client context object
    ctx = ClientContext(sharepoint_url).with_credentials(user_credentials)

    return ctx



def upload_to_sharepoint(dir_name: str, file_name: str):

    # sp_relative_url = create_sharepoint_directory(dir_name)
    ctx = get_sharepoint_context_using_user()

    target_folder = ctx.web.get_folder_by_server_relative_url(
        "test")

    with open(file_name, 'rb') as content_file:
        file_content = content_file.read()
        target_folder.upload_file(file_name, file_content).execute_query()


print(upload_to_sharepoint('test', "TEST.pdf"))

我需要根据元数据创建列。

我指的是下面的 github 链接,但没有找到合适的例子。 https://github.com/vgrem/Office365-REST-Python-Client/tree/master/examples/sharepoint

经过几天努力阅读 API 文档,终于找到了解决方案。 这将有助于任何工作的 Python SharePoint API。

data = {"name" : "TEST.pdf", "Owner": "Mumbai", "TimeStamp": "3Aug2022 12:12", "pages": 34}
  1. 首先使用用户名和密码/client_id 和密钥创建 sharepoint 上下文。
ctx = get_sharepoint_context_using_user()
  1. 从 sharepoint 列表中获取项目。
list_items = ctx.web.lists.get_by_title(
        config.SHAREPOINT_LIBRARY_NAME,
    )

items = list_items .items.get().execute_query()
  1. 迭代项目并将数据(字典)更新为元数据属性。
for item in items:
    for k, v in data.items():
        item.set_property(k, v).update().execute_query()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM