我正在为 moodle 编写一个 mod 活动,它加载文件并向任何可以访问该课程的学生展示。
问题是在moodle中处理文件非常困难。
这是我到目前为止所做的:
带有进口商的选项页面
$mform->addElement('filepicker', 'slidesyncmedia', get_string('slidesyncmedia', 'slidesync'), null, array('maxbytes' => $maxbytes, 'accepted_types' => '*'));
$mform->addElement('filemanager', 'slidesyncslides', get_string('slidesyncslides', 'slidesync'), null, array('subdirs' => 0, 'maxbytes' => $maxbytes, 'maxfiles' => 50, 'accepted_types' => array('*') ));
提交后,文件存储在草稿中,所有内容都加载到另一个页面中,所有内容都保存在数据库中
if ($draftitemid = file_get_submitted_draft_itemid('slidesyncmedia')) {
file_save_draft_area_files($draftitemid, $context->id, 'mod_slidesync', 'slidesyncmedia', 0, array('subdirs' => 0, 'maxfiles' => 1));
}
if ($draftitemid = file_get_submitted_draft_itemid('slidesyncslides')) {
file_save_draft_area_files($draftitemid, $context->id, 'mod_slidesync', 'slidesyncslides', 0, array('subdirs' => 0, 'maxfiles' => 50));
}
最后我在另一个地方再次使用第一页(如果文件在那里,然后显示它们)
$fs = get_file_storage();
if ($files = $fs->get_area_files($context->id, 'mod_slidesync', 'slidesyncslides', '0', 'sortorder', false)) {
// Look through each file being managed
foreach ($files as $file) {
// Build the File URL. Long process! But extremely accurate.
$fileurl = moodle_url::make_pluginfile_url($file->get_contextid(), $file->get_component(), $file->get_filearea(), $file->get_itemid(), $file->get_filepath(), $file->get_filename());
echo $fileurl;
}
} else {
echo '<p>Please upload an image first</p>';
}
这会创建一个 url,但如果单击 moodle 说该文件不存在 mysite.com/pluginfile.php/53/mod_slidesync/slidesyncslides/0/Koala.jpg
在数据库中,文件已正确保存!!!53 mod_slidesync slidesyncslides 0 /考拉.jpg
我错过了什么?
谢谢