如何使用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:/{临时文件完整路径}:
- 通过文件ID删除:执行
- 额外提示:如果这些临时文件和未完成的上传会话绑定,你也可以先调用
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




