Web services files handling: Difference between revisions
Line 15: | Line 15: | ||
The entry point is /webservice/upload.php, simply use HTTP POST method to upload files, it requires a web service token for authentication. If the upload is successfully, the files will be saved in the user private file area. The files information will be returned in JSON format. If an error occurs, an error message will be sent back in JSON format too. | The entry point is /webservice/upload.php, simply use HTTP POST method to upload files, it requires a web service token for authentication. If the upload is successfully, the files will be saved in the user private file area. The files information will be returned in JSON format. If an error occurs, an error message will be sent back in JSON format too. | ||
Look at the [https://github.com/moodlehq/sample-ws-clients/tree/master/PHP-HTTP-filehandling code example on Github]. | |||
== File download == | == File download == |
Revision as of 07:03, 25 November 2011
Summary
Since Moodle 2.0, we provide web service functions to upload and download files, they are:
- moodle_file_get_files (Deprecated, use core_files_get_files since moodle 2.2 onward)
- moodle_file_upload (Deprecated, use core_files_upload since moodle 2.2 onward)
File contents are encoded in base64 for web service transmission, it's not efficient, for mobile devices, there isn't enough memory to decode/encode web service request/response contains large files.
So we developed alternative way to upload/download files for web service clients.
File upload
The entry point is /webservice/upload.php, simply use HTTP POST method to upload files, it requires a web service token for authentication. If the upload is successfully, the files will be saved in the user private file area. The files information will be returned in JSON format. If an error occurs, an error message will be sent back in JSON format too.
Look at the code example on Github.
File download
We don't serve the files through /pluginfile.php for web service client, because this script require user's login session to work, it might not an option for web service client, so we created /webservice/pluginfile.php to serve files like /pluginfile.php do but requires web service token for authentication, to use this script, please note:
- The service associated with this token must enable allow download flag in advanced service settings
- Web service must be valid