我想在 Python 中将大文件上传到 Sharepoint 文件夹。我正在使用 msgraph-sdk-python。
我在 microsoft 图形文档 上找到了我想要做的示例,但在 Python 中却找不到。
在此链接上,有一个 PHP 示例,它非常接近我在 Python 中所做的事情。但我似乎无法接触像 LargeFileUploadTask() 这样的类。
我还在Python中找到了一个上传会话的Python示例(在日历部分),但我不明白我应该如何使用这种技术发送我的文件。
类似的问题已在项目 Github 存储库上打开,并针对此问题提出了解决方案。但没有真正解决这个问题。
我知道我需要创建一个 UploadSession 对象并像在 PHP 代码片段中一样使用它,但我真的不明白如何做到这一点。
这是我使用的代码,基于github问题上的解决方法,但是上传真的很慢
async def _upload_video(self, video: Video) -> None:
try:
if not video.is_downloaded or not video.is_processed:
raise Exception("Video not downloaded or not processed")
print(f"Uploading video {video.title}")
request_body = DriveItem()
request_body.name = video.title
request_body.file = File()
result = await self.app_client.drives.by_drive_id(self.drive_id).items.by_drive_item_id(
self.trans_video_id).children.post(body=request_body)
with open(video.path, "rb") as f:
data = f.read()
print(f"Uploading data to {video.title}")
await self.app_client.drives.by_drive_id(self.drive_id).items.by_drive_item_id(result.id).content.put(
body=data)
print(f"Video {video.title} has been uploaded")
except Exception as e:
print(e)
好像LargeFileUploadTask会在下一个版本中添加,你可以在这里查看PR,它包含了如何使用它的示例。