使用SharePoint phpSPO库处理文件夹

3
我正在使用phpSPO库在PHP应用程序中与SharePoint合作。 https://github.com/vgrem/phpSPO 例如,我检索特定文件夹中的文件。
try {

    $authCtx = new AuthenticationContext($Settings['Url']);
    $authCtx->acquireTokenForUser($Settings['UserName'],$Settings['Password']);
    // conecction successfull  

   $folderUrl = "/sites/mySite/Tfts/eiic";

    $url = $Settings['Url'] .  "/_api/web/getFolderByServerRelativeUrl('{$folderUrl}')/Files";
   $request = new RequestOptions($url);
   $ctx = new ClientContext($url,$authCtx);
   $data = $ctx->executeQueryDirect($request);

  // HOW to Convert $data to FolderItem or Folder class ??

}
catch (Exception $e) {
    echo 'Error: ',  $e->getMessage(), "\n";
}

在上面的示例中,$ data是一个带有文件夹文件的JSON,但我如何将此JSON转换为文件或FileCollection以便使用其属性?
另一个问题是,如何将文件上传到特定文件夹??
非常感谢!
1个回答

3

在处理SharePoint资源时,我建议以文件文件夹等实体为目标。

在这种情况下,获取特定文件夹下文件的示例可以转换为:

$files = $ctx->getWeb()->getFolderByServerRelativeUrl($parentFolderUrl)->getFiles();
$ctx->load($files);
$ctx->executeQuery();
//print files info
foreach ($files->getData() as $file) {
    print "File name: '{$file->getProperty("ServerRelativeUrl")}'\r\n";
}

假设你的网站具有以下结构:

Documents (library) 
|
---   Archive (folder)
      |
      --- 2001 (folder)      

下面的示例演示了如何将文件上传到2001子文件夹中:

$targetFolderUrl = "/Documents/Archive/2007";
$localPath = "./User Guide.docx";

$fileName = basename($localPath);
$fileCreationInformation = new FileCreationInformation();
$fileCreationInformation->Content = file_get_contents($localPath);
$fileCreationInformation->Url = $fileName;

$uploadFile = $ctx->getWeb()->getFolderByServerRelativeUrl($targetFolderUrl)->getFiles()->add($fileCreationInformation);
$ctx->executeQuery();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接