Skip to content

Commit 2146c92

Browse files
committed
#308: example to upload a file and set its properties, enhancements for Web getFileByServerRelativePath & getFolderByServerRelativePath methods
1 parent 6ee4b2c commit 2146c92

5 files changed

Lines changed: 69 additions & 23 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
4+
require_once '../../vendor/autoload.php';
5+
$settings = include('../../../tests/Settings.php');
6+
7+
use Office365\Runtime\Auth\UserCredentials;
8+
use Office365\SharePoint\ClientContext;
9+
10+
11+
$credentials = new UserCredentials($settings['UserName'], $settings['Password']);
12+
$ctx = (new ClientContext($settings['Url']))->withCredentials($credentials);
13+
14+
$localPath = "../../data/SharePoint User Guide.docx";
15+
$libraryTitle = "Documents";
16+
$lib = $ctx->getWeb()->getLists()->getByTitle($libraryTitle);
17+
$uploadFile = $lib->getRootFolder()->uploadFile(basename($localPath),file_get_contents($localPath))->executeQuery();
18+
$listItem = $uploadFile->getListItemAllFields();
19+
$listItem->setProperty("Title", "Uploaded")->update()->executeQuery(); // update file metadata
20+
print "File {$uploadFile->getServerRelativeUrl()} has been uploaded\r\n";
21+
22+

examples/SharePoint/Files/UploadFile.php

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Office365\SharePoint\ClientContext;
99

1010

11-
function uploadFileAlt(ClientContext $ctx, $sourceFilePath, $targetFileUrl)
11+
/*function uploadFileAlt(ClientContext $ctx, $sourceFilePath, $targetFileUrl)
1212
{
1313
$fileContent = file_get_contents($sourceFilePath);
1414
try {
@@ -17,25 +17,19 @@ function uploadFileAlt(ClientContext $ctx, $sourceFilePath, $targetFileUrl)
1717
} catch (Exception $e) {
1818
print "File upload failed:\r\n";
1919
}
20-
}
21-
20+
}*/
2221

23-
try {
24-
$credentials = new UserCredentials($settings['UserName'], $settings['Password']);
25-
$ctx = (new ClientContext($settings['Url']))->withCredentials($credentials);
26-
$localPath = "../data/";
27-
$targetLibraryTitle = "Documents";
28-
$targetList = $ctx->getWeb()->getLists()->getByTitle($targetLibraryTitle);
2922

30-
$searchPrefix = $localPath . '*.*';
31-
foreach(glob($searchPrefix) as $filename) {
32-
$uploadFile = $targetList->getRootFolder()->uploadFile(basename($filename),file_get_contents($filename));
33-
$ctx->executeQuery();
34-
print "File {$uploadFile->getServerRelativeUrl()} has been uploaded\r\n";
35-
}
23+
$credentials = new UserCredentials($settings['UserName'], $settings['Password']);
24+
$ctx = (new ClientContext($settings['Url']))->withCredentials($credentials);
25+
$localPath = "../../data/";
26+
$targetLibraryTitle = "Documents";
27+
$targetList = $ctx->getWeb()->getLists()->getByTitle($targetLibraryTitle);
3628

37-
}
38-
catch (Exception $e) {
39-
echo 'Error: ', $e->getMessage(), "\n";
29+
$searchPrefix = $localPath . '*.*';
30+
foreach(glob($searchPrefix) as $filename) {
31+
$uploadFile = $targetList->getRootFolder()->uploadFile(basename($filename),file_get_contents($filename));
32+
$ctx->executeQuery();
33+
print "File {$uploadFile->getServerRelativeUrl()} has been uploaded\r\n";
4034
}
4135

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
require_once '../../vendor/autoload.php';
3+
$settings = include('../../../tests/Settings.php');
4+
5+
use Office365\Runtime\Auth\ClientCredential;
6+
use Office365\SharePoint\ClientContext;
7+
use Office365\SharePoint\MoveOperations;
8+
use Office365\SharePoint\SPResourcePath;
9+
10+
$credentials = new ClientCredential($settings['ClientId'], $settings['ClientSecret']);
11+
$siteUrl = $settings['TeamSiteUrl'];
12+
$client = (new ClientContext($siteUrl))->withCredentials($credentials);
13+
14+
$folder = $client->getWeb()->getFolderByServerRelativePath("Shared Documents")->get()->executeQuery();
15+
//$folder = $client->getWeb()->getFolderByServerRelativePath("Shared Documents")->get()->executeQuery();
16+
print($folder->getServerRelativeUrl());

src/SharePoint/SPResourcePath.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public function __toString()
2222
return $this->DecodedUrl;
2323
}
2424

25+
/**
26+
* @return array
27+
*/
28+
public function toJson()
29+
{
30+
return array("DecodedUrl" => rawurlencode($this->DecodedUrl));
31+
}
32+
2533
/**
2634
* @var string
2735
*/

src/SharePoint/Web.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,13 +195,16 @@ public function getFileByServerRelativeUrl($serverRelativeUrl)
195195
}
196196
/**
197197
* Returns the file object located at the specified server-relative Path.
198-
* @param SPResourcePath $serverRelativePath The server relative Path of the file.
198+
* @param SPResourcePath|string $serverRelativePath The server relative Path of the file.
199199
* @return File
200200
*/
201201
public function getFileByServerRelativePath($serverRelativePath)
202202
{
203-
$params = array("decodedUrl" => rawurlencode($serverRelativePath->DecodedUrl));
204-
return new File($this->getContext(), new ServiceOperationPath("getFileByServerRelativePath", $params, $this->getResourcePath()));
203+
if(is_string($serverRelativePath)) {
204+
$serverRelativePath = new SPResourcePath($serverRelativePath);
205+
}
206+
return new File($this->getContext(),
207+
new ServiceOperationPath("getFileByServerRelativePath", $serverRelativePath->toJson(), $this->getResourcePath()));
205208
}
206209
/**
207210
* Returns the file object with the specified GUID.
@@ -223,12 +226,15 @@ public function getFolderByServerRelativeUrl($serverRelativeUrl)
223226
}
224227
/**
225228
* Returns the folder object located at the specified server-relative Path.
226-
* @param SPResourcePath $serverRelativePath
229+
* @param SPResourcePath|string $serverRelativePath
227230
* @return Folder
228231
*/
229232
public function getFolderByServerRelativePath($serverRelativePath)
230233
{
231-
return new Folder($this->getContext(), new ServiceOperationPath("getFolderByServerRelativePath", array("decodedUrl" => rawurlencode($serverRelativePath->DecodedUrl)), $this->getResourcePath()));
234+
if(is_string($serverRelativePath)) {
235+
$serverRelativePath = new SPResourcePath($serverRelativePath);
236+
}
237+
return new Folder($this->getContext(), new ServiceOperationPath("getFolderByServerRelativePath", $serverRelativePath->toJson(), $this->getResourcePath()));
232238
}
233239
/**
234240
* Returns the folder object with the specified GUID.

0 commit comments

Comments
 (0)