Moodle文件API:多行?

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-&

在Moodle表单中,我使用
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限制的区域文件(…)