如何使用PHP Graph SDK在SharePoint指定路径创建文件夹
在指定路径的已存在文件夹内创建子文件夹(PHP Graph SDK)
要在指定文件夹而非根目录创建子文件夹,核心是修改请求的目标端点,将根目录定位替换为目标文件夹的定位,以下是两种常用实现方式:
方法一:直接通过文件夹路径创建
如果知道目标文件夹的完整路径(比如/Workspace/ProjectA),可以直接在Graph API的端点中用路径定位,无需额外获取文件夹ID:
$graph = new Graph(); $graph->setAccessToken($token); // 替换为你的目标文件夹完整路径,格式为 /根目录下的层级路径/目标文件夹 $targetFolderPath = "/Workspace/ProjectA"; // 构造请求端点:root:/[目标路径]:/children $requestUrl = "/me/drive/root:$targetFolderPath:/children"; $graph->createRequest("POST", $requestUrl) ->attachBody([ "name" => "New Subfolder", "folder" => new stdClass(), "@microsoft.graph.conflictBehavior" => "rename" // 重名时自动添加后缀避免冲突 ])->execute(); return $graph;
方法二:通过文件夹ID创建
如果需要频繁操作同一个文件夹,先获取目标文件夹的ID再发起请求会更高效:
步骤1:获取目标文件夹ID
$graph = new Graph(); $graph->setAccessToken($token); $targetFolderPath = "/Workspace/ProjectA"; // 通过路径拉取文件夹详情,提取其中的ID字段 $folder = $graph->createRequest("GET", "/me/drive/root:$targetFolderPath") ->execute() ->getResponseBody(); $folderId = $folder['id'];
步骤2:用文件夹ID创建子文件夹
// 用获取到的folderId构造请求端点 $graph->createRequest("POST", "/me/drive/items/$folderId/children") ->attachBody([ "name" => "New Subfolder", "folder" => new stdClass(), "@microsoft.graph.conflictBehavior" => "rename" ])->execute(); return $graph;
关键参数说明
@microsoft.graph.conflictBehavior可选值:rename(重名自动加后缀)、fail(重名返回错误)、replace(替换已有文件夹),可根据业务需求选择。- 确保当前token拥有目标文件夹的写入权限,且路径输入准确。
内容的提问来源于stack exchange,提问作者Aquiko
相关产品推荐
相关产品推荐

