You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python使用共享链接和密码以访客身份上传文件至SharePoint

借助带密码的SharePoint共享链接以访客身份上传文件

问题背景

我需要编写Python脚本将文件上传到某组织的SharePoint文件夹,但我不是该SharePoint的管理员,无法在Microsoft Graph中添加应用权限,也不想在脚本里使用邮箱密码登录。目标文件夹有带密码的共享链接,任何人都能通过该链接访问并编辑文件。之前尝试用client_id和client_secret的应用权限认证代码无法通过,想知道如何用共享链接+密码以访客身份完成上传。

之前尝试的代码:

app_principal = {  
'client_id': client_id,  
'client_secret': secret_id,  
}  

context_auth = AuthenticationContext(url=site_url)  
context_auth.acquire_token_for_app(client_id=app_principal['client_id'], client_secret=app_principal['client_secret'])  

ctx = ClientContext(site_url, context_auth)  
web = ctx.web  
ctx.load(web)  
ctx.execute_query()  
print("Web site title: {0}".format(web.properties['Title']))

解决方案

你可以通过office365-rest-python-client库直接利用共享链接和密码完成认证,无需管理员配置应用权限,具体步骤如下:

1. 安装依赖库

pip install office365-rest-python-client

2. 编写上传脚本

核心思路是通过共享链接的密码获取临时访问令牌,再用该令牌创建客户端上下文,最后执行文件上传操作:

from office365.sharepoint.client_context import ClientContext

# 配置参数
shared_link_url = "你的带密码的SharePoint文件夹共享链接"
shared_link_password = "共享链接的密码"
local_file_path = "本地要上传的文件路径"
target_folder_subpath = "共享文件夹内的目标子路径(可选,留空则上传到根目录)"

# 1. 通过共享链接和密码初始化认证上下文
ctx = ClientContext.with_shared_link(shared_link_url, shared_link_password)

# 2. 获取目标文件夹对象
if target_folder_subpath:
    target_folder = ctx.web.get_folder_by_server_relative_path(target_folder_subpath)
else:
    # 直接使用共享链接指向的根文件夹
    target_folder = ctx.web.get_folder_by_server_relative_url(ctx.shared_link.resource_path.segment)

# 3. 读取本地文件并上传
with open(local_file_path, 'rb') as file_stream:
    file_name = local_file_path.split("/")[-1].split("\\")[-1]  # 兼容Windows和Linux路径
    target_folder.upload_file(file_name, file_stream).execute_query()

print("文件上传完成")

关键说明

  • 该方式完全依赖共享链接的权限,不需要管理员配置应用、也不需要账号密码登录
  • 确保共享链接本身具备编辑权限,仅查看权限的链接无法完成上传操作
  • 如果共享链接指向的是单个文件而非文件夹,需要调整代码中目标路径的获取逻辑

内容的提问来源于stack exchange,提问作者Richard R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:15:16