Web services files handling: Difference between revisions
Line 1: | Line 1: | ||
== Summary == | == Summary == | ||
Since Moodle 2.0, we provide web service functions to upload and download files | 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_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) | # 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 | File contents are encoded in base64, and for web service transmission, it's not efficient. Mobile devices don't have enough memory to decode/encode web service request/response containing large files. | ||
So we developed alternative | So we developed some alternative solutions to upload/download files for web service clients. | ||
== File upload == | == File upload == |
Revision as of 07:16, 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, and for web service transmission, it's not efficient. Mobile devices don't have enough memory to decode/encode web service request/response containing large files.
So we developed some alternative solutions 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 serve the files through /webservice/pluginfile.php. This script requires a web service token for authentication.
Look at the code example on Github.
In case of issue, think to check that:
- the service associated with the token allow "files download" (Administration > Plugins > Web services > Manage services > Edit service > Advanced button)
- the web service is valid
Note: you could remark that /webservice/pluginfile.php has the exact same stucture than /pluginfile.php. We don't serve the files through /pluginfile.php for web service clients because this script requires user's login session to work. It's why it might not be an option for web service client.