gotohayato.com

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

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

Drupal 7

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

結論は、一定時間経過すると cron で自動的に削除されます。

流れ:

  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);

hg

後藤隼人 (ごとうはやと)

ウェブ制作・開発やマーケティング、プロジェクト支援などをしています。

githubpython

お知らせ

大阪大学子どものこころの分子統御機構研究センターさんが 10 月 20 日までクラウドファンディングをされています(後藤も少しだけ寄附させていただきました)。
© 2021 gotohayato.com
サイトについてタグアーカイブメッセージを送る