You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Microsoft Graph API删除OneDrive部分上传文件及配置自动清理

解决OneDrive部分上传生成的临时文件问题

我来帮你拆解这个问题,分两部分来解答:

一、删除已存在的不完整临时文件

要删除这些带临时扩展名的不完整文件,你可以通过Graph API的删除接口操作,步骤如下:

  • 首先定位目标文件:
    • 如果你知道临时文件的具体路径,直接用路径定位;
    • 不知道路径的话,发送GET /drive/root/children请求(可配合$filter筛选临时扩展名,比如$filter=endswith(name, '.tmp')),获取到文件的item-id或完整路径。
  • 发送删除请求:
    • 通过文件ID删除:执行DELETE /drive/items/{item-id}
    • 通过文件路径删除:执行DELETE /drive/root:/{临时文件完整路径}:
  • 额外提示:如果这些临时文件和未完成的上传会话绑定,你也可以先调用GET /drive/items/{item-id}/createUploadSession查看会话状态,再删除该上传会话,OneDrive会同步清理关联的临时文件。

二、配置上传未完成时自动清理临时文件

OneDrive本身有默认的清理机制,同时你也可以主动配置优化:

  • 设置上传会话过期时间:在创建上传会话的POST /drive/root:/{item-path}:/createUploadSession请求体中,添加expirationDateTime参数,指定一个较短的过期时间(比如1小时)。当会话过期后,OneDrive会自动删除关联的临时文件。示例请求体:
    {
      "item": {
        "@microsoft.graph.conflictBehavior": "replace"
      },
      "expirationDateTime": "2024-05-20T12:00:00Z"
    }
    
  • 代码逻辑中主动清理:在你的上传代码里,捕获上传中断、失败的异常,一旦触发异常,立即调用上面的删除接口清理临时文件,不用等会话过期。
  • 默认机制补充:OneDrive上传会话的默认过期时间是24小时,即使你不手动设置,过期后临时文件也会被自动删除,不会长期留存。

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

火山引擎 最新活动