我正在尝试开发一个Moodle Android应用程序。我正在使用MoodleREST源代码作为参考。但是这个库没有提供上传作业的其余代码。我希望能够通过Web服务调用从移动的客户端上传作业。使用Web视图上传作业是可能的,但在这种情况下,用户需要再次登录才能访问上传作业页面。
我在这里找到了类似的东西https://moodle.org/mod/forum/discuss.php?d=207875。
我是Moodle的新手,还在学习它,所以我的问题可能有点天真,所以请容忍:)
我正在尝试开发一个Moodle Android应用程序。我正在使用MoodleREST源代码作为参考。但是这个库没有提供上传作业的其余代码。我希望能够通过Web服务调用从移动的客户端上传作业。使用Web视图上传作业是可能的,但在这种情况下,用户需要再次登录才能访问上传作业页面。
我在这里找到了类似的东西https://moodle.org/mod/forum/discuss.php?d=207875。
我是Moodle的新手,还在学习它,所以我的问题可能有点天真,所以请容忍:)
3条答案
按热度按时间7fyelxc51#
可以使用Moodle网络服务将提交的文件上传到作业中。
首先使用
core_files_upload
将文件上载到草稿http://my-moodle-url/moodle/webservice/rest/server.php?wstoken=token_value_xyz&moodlewsrestformat=json&wsfunction=core_files_upload&component=user&filearea=draft&itemid=0&filepath=/&filename=test2.txt&filecontent=TWFuIGlzIGRpc3Rpbmd1aXNoZWQ=&contextlevel=user&instanceid=8
其中:
itemid=0 - moodle将生成并返回一个
itemid
或者您设置itemidfilecontent - base64编码的文件内容
instanceid -其为Web服务标记的用户ID
样本响应:
您可以使用
mod_assign_get_assignments
搜索下一个呼叫的分配ID然后使用收到的项目ID,此处为“293005570”,格式为
mod_assign_save_submission
http://my-moodle-url/moodle/webservice/rest/server.php?wstoken=token_value_xyz&moodlewsrestformat=json&wsfunction=mod_assign_save_submission&assignmentid=5&plugindata[onlinetext_editor][text] =some_text_here&plugindata[onlinetext_editor][format] =1&plugindata[onlinetext_editor][itemid]=521767865&plugindata[files_filemanager]=521767865
这将在此文件中添加作业提交。
问题我可以
core_files_upload
和mod_assign_save_submission
只使用一个特定用户的Web服务令牌,即每个用户需要一个Web服务令牌,这可能是不切实际的。用 Postman 测试。这可能与:https://tracker.moodle.org/browse/MDL-61276
mnemlml82#
在Moodle网络服务中似乎没有现成的解决方案。Moodle实际上用base64编码文件,这给移动的设备带来了负担。移动设备没有那么多内存来编码大文件。Moodle HQ(和其他公司)发布的封闭解决方案是这样的:https://github.com/moodlehq/sample-ws-clients/blob/master/PHP-HTTP-filehandling/client.php将文件保存为私有文件而不是任务。您可能需要对插件进行大量修改。
bakd9h0s3#
为了上传文件,我使用这个API和POST方法
您的网址:
并且必须将以下参数作为FormData传递