Filemanager将文件保存到自定义表中

时间:2017-02-07 13:27:31

标签: php moodle

我正在使用Moodle 3.1+。我使用filepicker上传文件。它工作正常。但filepicker只显示上传的文件名。我想在filepicker中显示上传的图像,这似乎是不可能的。另一个选择是使用filemanager,但它需要额外的参数,比如contextid,在我的情况下不存在。我将上传的图像路径插入到我创建的表中。那么如何使用filemanager将文件保存到自定义表中呢?

file_save_draft_area_files($data->attachments, $context->id, 'mod_glossary', 'attachment',
                   $entry->id, array('subdirs' => 0, 'maxbytes' => $maxbytes, 'maxfiles' => 50));

1 个答案:

答案 0 :(得分:0)

首先,在表单中创建一个filemanager元素:

$filemanageropts = $this->_customdata['filemanageropts'];
$mform->addElement('filemanager', 'attachment',get_string('displayedcontent', 'block_helloworld'), null, $filemanageropts);

注意:附件与我的自定义表格中的名称相同。因此,此字段将填充文件itemid。

然后,在您构建逻辑脚本保存文件到您的自定义区域:

//form has been submitted
file_save_draft_area_files($form_submitted_data->attachment, $context->id, 'block_helloworld', 'attachment',
$form_submitted_data->attachment, array('subdirs' => 0, 'maxbytes' => 500000, 'maxfiles' => 1));

然后,当您加载表单数据时:使用以下命令准备MOODLE中的草稿区域:

$draftitemid = $helloworldpage->attachment ; 
        file_prepare_draft_area($draftitemid, $context->id, 'block_helloworld', 'attachment', $helloworldpage->attachment,
            array('subdirs' => 0, 'maxbytes' => 5000000, 'maxfiles' => 1));

资源: