2017-03-23 7 views
0

私はfilemanager要素使用してファイルのアップロードを実行します。フォームが、私は、データベース内の自分のインスタンスを記録したときに、私はまた、次の関数を使用して、アップロードしたファイルを保存し、検証されるとMoodle File API:複数行ですか? Moodleのフォームで

$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_filesで見てみると、私は私のファイルの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_helloworldとコンポーネントuserに2行あります。 1つの行にはファイル名がありますが、他の行にはありません。

これは奇妙に聞こえる。それは普通ですか? ファイルの削除を実行すると、これらのファイルをすべて削除する方法はありますか?

注:私は私が覚えている限りではなMoodle v3.0.6

+0

どのMoodleのバージョンをお使いですか? –

答えて

0

を使用しています、これは正常な動作です。私もこの問題を抱えていましたが、ファイルをアップロードしてコースに入れたようにチェックすると、2行もあることに気づくでしょう。わからない、なぜ私にとって、それは正常な動作

0

た4エントリは次のとおりです。

  • あなたのファイルが
  • ファイル自体
  • フォルダ内にあるフォルダというのドラフト版フォームが
  • フォームながら、ドラフトファイルが編集されている

ドラフトFIを編集している間、ファイルはで保存されていますlesは1日程度後に自動的にクリーンアップされます。

+0

OK、削除ページを実装するとき、コンポーネント 'block_helloworld'の2行を削除するだけで済みます(' user'コンポーネント行は気にしないでください)。 –

+0

ブロックコンテキスト内でブロックを削除している場合、Moodleは自動的にクリーンアップする必要があります。そうでない場合は、ファイルAPIを使用して領域を削除してください。mdl_filesに直接アクセスする必要はありません。 – davosmith

+0

私はファイルの組み込みAPIを使用してファイルの削除を実行することを確かめていますが、削除を実行すると、削除されるファイル名の行しかありません。ファイル名= '。'の行まだmdl_filesにあります。それは普通ですか?この行も削除するには、ファイルAPIを使用してコードを追加する必要がありますか? –