【问题标题】:Get path of uploaded image in Moodle获取Moodle中上传图片的路径
【发布时间】:2016-08-25 13:21:47
【问题描述】:

我添加了自定义列来存储公司徽标。我用过moodle的文件api,比如:

$mform->addElement('filepicker', 'certificatelogo', 'Company Logo', null,
               array('maxbytes' => $maxbytes, 'accepted_types' => '*'));
$mform->setDefault('certificatelogo', '0');
$mform->addHelpButton('certificatelogo', 'certificatelogo', 'certificate');

提交表单后,itemid 将存储在自定义列中。说“648557354”

现在我需要获取图像以在证书上打印徽标。如何从 itemid 获取图像路径?我需要存储任何其他信息来检索图像吗?

【问题讨论】:

    标签: moodle fileapi moodle-api


    【解决方案1】:

    返回的 itemid 是显示表单时存储文件的草稿区域的临时 ID。您需要在提交表单时将文件复制到其“真实”位置,否则该文件将在几天后自动删除(并且只有最初上传该文件的用户才能访问该文件)。

    如果您打算保留文件,我总是建议使用 filemanager 元素(filepicker 元素用于您要处理和丢弃的文件,例如在上传 CSV 文件数据以解析并添加到数据库时)。

    如何使用它的详细信息在这里: https://docs.moodle.org/dev/Using_the_File_API_in_Moodle_forms#filemanager

    但基本步骤是:

    1. 将任何现有文件从“真实”区域复制到草稿区域 (file_prepare_standard_filemanager)。
    2. 显示表单。
    3. 提交时,将文件从草稿区域复制到“真实”区域 (file_postupdate_standard_filemanager)。
    4. 当您想向用户显示文件时,获取存储在文件区域中的文件列表(由您在 file_prepare_standard_filemanager 和 file_postupdate_standard_filemanager 中使用的组件、文件区域、上下文以及可选的 itemid 定义)。你可以这样做: $fs = get_file_storage(); $fs->get_area_files().
    5. 对于这些文件(在您的情况下可能只有 1 个文件),使用 moodle_url::make_pluginfile_url 生成 URL。
    6. 确保您的插件在 lib.php 中有一个 PLUGINNAME_pluginfile() 函数,以检查传入的文件请求,对其进行安全检查,然后提供文件。

    所有这一切都有一个合理的例子:https://github.com/AndyNormore/filemanager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 2012-06-05
      • 2012-08-19
      • 1970-01-01
      相关资源
      最近更新 更多