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

Microsoft Graph SDK上传文件时如何设置deferCommit延迟提交参数?

问题根因

deferCommit 是createUploadSession接口请求体的顶级参数,和item参数平级,而你用到的DriveItemUploadableProperties类的所有属性(包括AdditionalData)都会被SDK序列化到请求体的item字段内,所以把deferCommit放到这里不会被接口识别,自然不生效。

正确实现方案

1. 传递deferCommit参数(以Graph SDK v5+版本为例)

你需要构造完整的CreateUploadSessionPostRequestBody对象,将deferCommit放到请求体顶级的AdditionalData中,示例代码如下:

// 构造item节点的属性配置
var driveItemProps = new DriveItemUploadableProperties
{
    ODataType = null,
    AdditionalData = new Dictionary<string, object>
    {
        { "@microsoft.graph.conflictBehavior", "replace" }
    }
};

// 构造完整的创建上传会话请求体
var sessionRequestBody = new CreateUploadSessionPostRequestBody
{
    Item = driveItemProps,
    // deferCommit放到请求体顶级的附加数据中
    AdditionalData = new Dictionary<string, object>
    {
        { "deferCommit", true }
    }
};

// 示例:在Drive根目录创建指定文件的上传会话
var uploadSession = await graphClient.Drive.Root
    .ItemWithPath("your-target-file.ext")
    .CreateUploadSession
    .PostAsync(sessionRequestBody);

2. 手动完成提交

所有文件分片上传完成后,你需要向上传会话的UploadUrl发送空POST请求完成提交,示例代码如下:

using var httpClient = new HttpClient();
// 发送空POST请求触发提交
var completeResult = await httpClient.PostAsync(uploadSession.UploadUrl, content: null);

if (completeResult.IsSuccessStatusCode)
{
    // 提交成功,可解析返回内容获取最终的DriveItem信息
    var resultContent = await completeResult.Content.ReadAsStringAsync();
}

旧版v4 SDK适配

如果你使用的是v4版本的Graph SDK,可以直接构造自定义请求传入deferCommit参数:

var uploadSession = await graphClient.Drive.Root
    .ItemWithPath("your-target-file.ext")
    .CreateUploadSession(
        new DriveItemCreateUploadSessionRequestBody
        {
            Item = new DriveItem
            {
                AdditionalData = new Dictionary<string, object>
                {
                    { "@microsoft.graph.conflictBehavior", "replace" }
                }
            },
            DeferCommit = true
        })
    .Request()
    .PostAsync();

内容的提问来源于stack exchange,提问作者Dadv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:15:10