Moodle文件API:多行?
在Moodle表单中,我使用Moodle文件API:多行?,moodle,moodle-api,Moodle,Moodle Api,在Moodle表单中,我使用filemanager元素执行文件上传: $mform->addElement('filemanager', 'attachment',get_string('displayedcontent', 'block_helloworld'), null, $filemanageropts); 表单验证后,当我在数据库中记录我的实例时,我还使用以下功能保存上传的文件: file_save_draft_area_files($form_submitted_data-&
filemanager
元素执行文件上传:
$mform->addElement('filemanager', 'attachment',get_string('displayedcontent', 'block_helloworld'), null, $filemanageropts);
表单验证后,当我在数据库中记录我的实例时,我还使用以下功能保存上传的文件:
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));
这工作正常,但当我查看DB表mdl_文件
时,我发现我的文件有4行:
component fileare itemid filepath filename
block_helloworld attachment 706783489 / .
block_helloworld attachment 706783489 / test5.pdf
user draft 706783489 / .
user draft 706783489 / test5.pdf
我上传的文件在我的组件block\u helloworld
和组件user
中有两行。
一行有文件名,但另一行没有
这听起来很奇怪。这正常吗?
当我执行文件删除时,如何删除所有这些文件
注意:我使用的是moodle v3.0.6,据我记忆所及,这是正常的行为。我也有这个问题,但当你交叉检查(比如把文件上传到课程中)时,你会注意到也有两行。不确定,为什么,但对我来说这是正常的行为这4个条目是:
- 文件所在的文件夹
- 文件本身
- 编辑表单时存储文件草稿版本的文件夹
- 编辑表单时的草稿文件
大约一天后,草稿文件将自动清理。您使用的是哪种Moodle版本?好的,当我实现删除页面时,我只需删除我的组件
block\u helloworld
(并且不关心用户
组件行)?如果它在块上下文中,并且您正在删除块,那么Moodle应该自动清理。如果没有,请使用文件API删除该区域-您不需要直接访问mdl_文件。当然,我将仅使用内置的文件API执行文件删除,但在执行删除时,我只有带有已删除文件名的行。文件名为“”的行仍在mdl_文件中。这正常吗?我是否也应该使用文件API添加代码来删除这一行?您只是删除单个文件,还是调用$fs->delete_area_files(…)来删除整个区域?我正在删除从以下位置检索的单个文件:$fs->get_area_files(…)
,返回大小为1的数组。因此,filename='.'所在的行仍在mdl_files
表中。我是否应该尝试$fs->删除受$itemid限制的区域文件(…)
?