如何使用Microsoft Graph SDK for C# v5.x创建SharePoint文件上传会话?
核心实现代码
Graph SDK v5.x对API结构做了调整,移除了v4.x中.Request()和.PostAsync()的链式调用模式,改用强类型请求体+直接调用PostAsync的方式实现。以下是对应原v4.x逻辑的v5.x代码:
using Microsoft.Graph; using Microsoft.Graph.Drives.Item.Items.Item.CreateUploadSession; // 可选:构造请求体自定义会话配置,比如设置文件冲突处理规则 var requestBody = new DriveItemCreateUploadSessionPostRequestBody { Item = new DriveItemUploadableProperties { AdditionalData = new Dictionary<string, object> { { "@microsoft.graph.conflictBehavior", "replace" } } } }; // 创建上传会话 var session = await graphClient.Sites[graphSiteId] .Lists[listId] .Items[itemId] .DriveItem .CreateUploadSession .PostAsync(requestBody); // 用获取到的session初始化LargeFileUploadTask,对接你已有的上传逻辑 // var uploadTask = new LargeFileUploadTask<DriveItem>(graphClient, session, fileStream, fileSize);
关键变化说明
- 采用强类型请求体
DriveItemCreateUploadSessionPostRequestBody替代v4.x的参数拼接方式,类型更安全 - 调用路径简化为
.CreateUploadSession.PostAsync(...),无需额外的.Request()环节 - 若无需自定义会话配置,可直接传入
null作为请求体参数:var session = await graphClient.Sites[graphSiteId] .Lists[listId] .Items[itemId] .DriveItem .CreateUploadSession .PostAsync(null);
后续对接
获取到的session(类型为UploadSession)可直接用于初始化LargeFileUploadTask,和你已实现的上传代码完全兼容。
内容的提问来源于stack exchange,提问作者23W
相关产品推荐
相关产品推荐

