防止通过 Microsoft Graph API 覆盖上传文件

问题描述 投票:0回答:3

我通过 Microsoft Graph API dot.net sdk 使用以下代码

using (Stream fileStream = file.InputStream)
            {
                DriveItem uploadedFile = await graphClient
                    .Drives[DRIVE_ID]
                     .Root.ItemWithPath($"{root}{relative}{file.FileName}")
                        .Content.Request()
                        .PutAsync<DriveItem>(fileStream);


            }

将简单文件上传到 OneDrive。如果文件已经存在,是否可以阻止文件上传?

更新

Microsoft Graph 文档已在此处更新,其中摘录如下:

请求正文

https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_createuploadsession

无需请求正文。但是,您可以指定请求正文来提供有关正在上传的文件的附加数据。 例如,要控制文件名已被占用时的行为,您可以在请求正文中指定冲突行为属性。

{
    "item": {
        "@microsoft.graph.conflictBehavior": "rename"
    }
}
microsoft-graph-api office365api
3个回答
4
投票

不幸的是没有。为了防止文件覆盖(这也会创建新版本),您必须首先检查具有该路径的文件是否已存在。您可以通过列出父文件夹内容并按文件名检查来以编程方式执行此操作。


3
投票

尝试使用@microsoft.graph.conflictBehavior。更多信息请参见:https://dev.onedrive.com/items/upload_put.htm


0
投票

使用 MS Graph API 通过驱动器项更新上传文件时,可以通过使用任意值指定

if-match
标头(例如永远不会与 etag/ctag 匹配的“0”)来防止文件覆盖。

对现有项目的查询应返回

HTTP 412 Precondition-failed
。对于不存在的文件,查询应遍历并创建指定内容的文件。

这适用于“小文件上传”。但是,对于“可恢复上传”,您可以使用冲突行为标志来覆盖该行为。

© www.soinside.com 2019 - 2024. All rights reserved.