Web services:Files: Difference between revisions
mNo edit summary |
Luca Bösch (talk | contribs) No edit summary |
||
(2 intermediate revisions by one other user not shown) | |||
Line 5: | Line 5: | ||
This class implements the interface to moodle files, for browsing, downloading and uploading files. It is defined in files/externals.php. | This class implements the interface to moodle files, for browsing, downloading and uploading files. It is defined in files/externals.php. | ||
We cannot return the whole files tree by web service API, because to make sure the web services working in every language and platform, we need to define a fixed data structure of return value, but the files tree can change all the time. See more information about web services at: [[External_services_description]]. | We cannot return the whole files tree by web service API, because to make sure the web services is working in every language and platform, we need to define a fixed data structure of return value, but the files tree can change all the time. See more information about web services at: [[External_services_description]]. | ||
The class contains following methods: | The class contains following methods: | ||
Line 53: | Line 53: | ||
Sample code (using Zend Framework): | Sample code (using Zend Framework): | ||
< | <syntaxhighlight lang="php"> | ||
$url = MOODLE_WSROOT. '?wstoken=xxxxxxxxxxxxxxxxxxxxxx'; | $url = MOODLE_WSROOT. '?wstoken=xxxxxxxxxxxxxxxxxxxxxx'; | ||
$zend = new Zend_XmlRpc_Client($url); | $zend = new Zend_XmlRpc_Client($url); | ||
Line 59: | Line 59: | ||
$files = $srv->moodle_file_get_files($contextid, $component, $filearea, $itemid, $filepath, $filename); | $files = $srv->moodle_file_get_files($contextid, $component, $filearea, $itemid, $filepath, $filename); | ||
$file = $srv->moodle_file_upload($contextid, 'user', 'private', 0, '/', 'info.txt', base64_encode('this is file content')); | $file = $srv->moodle_file_upload($contextid, 'user', 'private', 0, '/', 'info.txt', base64_encode('this is file content')); | ||
</ | </syntaxhighlight> |
Latest revision as of 19:14, 11 April 2023
These APIs will be used to browse Moodle files by Moodle Web Services.
class moodle_file_external()
This class implements the interface to moodle files, for browsing, downloading and uploading files. It is defined in files/externals.php.
We cannot return the whole files tree by web service API, because to make sure the web services is working in every language and platform, we need to define a fixed data structure of return value, but the files tree can change all the time. See more information about web services at: External_services_description.
The class contains following methods:
get_files
This function is used to browse files.
It takes 5 parameters, all of them are optional, if you provide no parameters, it will return the top level content of moodle repository.
- contextid
- component
- filearea
- itemid
- filename
- filepath
It will return an array, can be described as PHP array:
$files = array( 'path' => array(array('name'=>'root', 'path=>'/'), array('name'=>'subdir', 'path=>'/sub/')), 'files' => array( array('filename'=>'readme', 'filepath'=>'/', 'filearea'=>'forum', 'itemid'=>110, 'contextid'=>1, 'isdir'=>true), array('filename'=>'changes', 'filepath'=>'/', 'filearea'=>'forum', 'itemid'=>112, 'contextid'=>1, 'isdir'=>false), ) );
The service name is "moodle_file_get_files", defined in lib/db/services.php.
upload
This function is used to upload a file to user private area.
It takes 7 parameters, all of them are mandatory:
- contextid
- component
- filearea
- itemid
- filepath
- filename
- filecontent
It will return a boolean value, true/false.
The service name is "moodle_file_upload", defined in lib/db/services.php
Sample code (using Zend Framework):
$url = MOODLE_WSROOT. '?wstoken=xxxxxxxxxxxxxxxxxxxxxx';
$zend = new Zend_XmlRpc_Client($url);
$srv = $zend->getProxy();
$files = $srv->moodle_file_get_files($contextid, $component, $filearea, $itemid, $filepath, $filename);
$file = $srv->moodle_file_upload($contextid, 'user', 'private', 0, '/', 'info.txt', base64_encode('this is file content'));