gotohayato.com

月(ダークモード)
太陽(ライトモード)

Drupal 7 でファイルアップロード後にノードを保存しなかった場合のファイルのゆくえ

Drupal 7

Drupal 7 でファイルフィールドからファイルをアップロードした後にノードを保存しなかった場合にアップロードしたファイルがその後どうなるかについてです。

結論としては、次の流れで一定時間経過後に削除されることになります:

  1. アップロードされたとき、ファイルは一時ディレクトリ以下に保存される
  2. ノードが保存されなかった場合、ファイルは一時ディレクトリに放置されたまま
  3. 6 時間以上経過した後の cron が走ると、一時ディレクトリの未保存ファイルが削除される

当該処理を担うコアの file_save_upload() 関数の doc コメントでは次のように説明されています。

/*
* The file will be added to the {file_managed} table as a temporary file.
* Temporary files are periodically cleaned. To make the file a permanent file,
* assign the status and use file_save() to save the changes.
*/

意訳:

  • ファイルは一時ファイルとして file_managed テーブルに追加されます。
  • 一時ファイルは定期的に掃除されます。
  • ファイルを残しておきたい場合はステータスを割り当てて file_save() で保存しましょう。

ちなみに、 6 時間という時間間隔は次のようにハードコーディングされているので原則変更できません:

/**
* Maximum age of temporary files in seconds.
*/
define('DRUPAL_MAXIMUM_TEMP_FILE_AGE', 21600);

後藤隼人
ウェブサイト制作・ウェブアプリ開発やマーケティングをしています。
GitHub
© 2020 gotohayato.com
サイトについてタグアーカイブメッセージを送る