bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. Livewireのファイルアップロード一時ファイルは誰が掃除しているのか

Livewireのファイルアップロード一時ファイルは誰が掃除しているのか

Mar 14, 2026 Laravel bucket-sort

Livewire の FileUpload を使っていて、ふと素朴な疑問が浮かびました。

アップロード途中の一時ファイルって誰が消しているんだろう?

ユーザーがブラウザを閉じたり、フォーム送信前に離脱した場合、 一時ファイルがサーバーに残り続けるのでは…?という疑問です。

調べてみたところ、Livewire には 一時ファイルのクリーンアップ機構がきちんと実装されていました。 自分用の覚え書きとしてまとめておきます。

Livewire 一時ファイルの保存場所

Livewire の一時アップロードファイルは、以下の設定で保存先が決まります。

// FileUploadConfiguration.php
config('livewire.temporary_file_upload.disk') ?: config('filesystems.default')
config('livewire.temporary_file_upload.directory') ?: 'livewire-tmp'

つまり通常は

storage/app/livewire-tmp

のようなディレクトリに保存されます。

一時ファイルが作成されるタイミング

ユーザーがフォームでファイルを選択した瞬間に、 Livewire は以下のエンドポイントにリクエストを送ります。

POST /livewire/upload-file

この時点で

  • ファイルは UUIDの名前
  • livewire-tmp ディレクトリ

に保存されます。 つまり

  • フォーム送信前でも
  • 選択した瞬間に

すでにサーバーへアップロードされています。

一時ファイルの削除タイミング

Livewire の一時ファイルは、次のようなタイミングで削除されます。

ケース 削除方法
フォーム送信成功 $upload->store() によって本来の保存先へ移動し、livewire-tmp から消える
セッション中断(ブラウザを閉じるなど) 一時ファイルが残るが、次のアップロード時にクリーンアップが実行される
S3利用 Livewireは削除しない。S3のライフサイクルポリシーで管理する

ポイントはここです。

Livewireは「次のアップロード時」に古いファイルを掃除する設計になっています。

クリーンアップの条件

削除対象になるのは 24時間以上経過したファイル です。

つまり

  • 今日アップロードされた残骸 → 残る
  • 昨日以前の残骸 → 削除対象

という動作になります。

自動削除の設定

Livewire にはこの挙動を制御する設定があります。

livewire.temporary_file_upload.cleanup

デフォルトは

true

です。

もし false にすると、自動削除は行われません。

実装コード

クリーンアップ処理は以下に実装されています。

vendor/livewire/livewire/src/Features/SupportFileUploads/WithFileUploads.php

アップロード完了時に、次の処理が呼ばれます。

function _finishUpload(...) {
    if (FileUploadConfiguration::shouldCleanupOldUploads()) {
        $this->cleanupOldUploads();
    }
}

実際の削除ロジックは次のような感じです。

protected function cleanupOldUploads() {
    // 24時間前のタイムスタンプ
    $yesterdaysStamp = now()->subDay()->timestamp;

    // livewire-tmp のファイルを走査
    if ($yesterdaysStamp > $storage->lastModified($filePathname)) {
        $storage->delete($filePathname);
    }
}

つまり

  1. livewire-tmp を走査
  2. 24時間より古いファイルを削除

というシンプルな仕組みです。

まとめ

Livewire の一時ファイルのライフサイクルをまとめるとこうなります。

  1. ファイル選択時に /livewire/upload-file へアップロード
  2. livewire-tmp に UUID 名で保存
  3. フォーム送信成功で store() により移動
  4. 残骸は 次のアップロード時に 24時間以上のものを削除

つまり、 Livewire が自動的に掃除してくれる仕組みが最初から入っている ということでした。

こういう内部実装を知っておくと、

  • サーバーのストレージ管理
  • S3利用時の設計

などを考えるときにも安心できます。

Laravel Livewire FileUpload 一時ファイル ストレージ PHP
← Laravelのcan()メソッドの動き整理 [C#] アンマネージドリソースとは →

Related Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026
  • Laravelのレート制限(throttle:5,1)とは何か Mar 27, 2026

Table of Contents

  • Livewire 一時ファイルの保存場所
  • 一時ファイルが作成されるタイミング
  • 一時ファイルの削除タイミング
  • クリーンアップの条件
  • 自動削除の設定
  • 実装コード
  • まとめ

Recent Posts

  • [WPF] XAML の構文を理解する: 名前空間とキーワード Aug 23, 2026
  • [WPF] Window クラスを支える基底クラス Aug 22, 2026
  • [WPF] Window クラスの役割と上位クラス Aug 21, 2026
  • [WPF] Application クラスの役割 Aug 20, 2026
  • [WPF] WPF の主要アセンブリと名前空間 Aug 19, 2026

Categories

  • C#165
  • .NET164
  • AWS27
  • Entity Framework Core24
  • Laravel16
  • Linux15
  • MySQL9
  • Apache8
  • PHP8
  • Data Access6
  • DynamoDB6
  • セキュリティ6
  • Nginx5
  • WordPress4
  • インフラ4
  • テスト4
  • Hugo3
  • .NET Framework1
  • Aurora1
  • Diagnostics1

Tags

  • C#
  • .NET
  • Entity Framework Core
  • AWS
  • Laravel
  • コレクション
  • PHP
  • セキュリティ
  • MySQL
  • Linux
  • パフォーマンス
  • LINQ
  • WPF
  • Apache
  • SQL Server
  • System.Collections.Generic
  • デリゲート
  • リフレクション
  • ADO.NET
  • Code Snippet
  • DbContext
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • System.Collections
  • Windows
  • メタデータ
  • メモリ管理
  • CIL
  • DoS
  • Nginx
  • WordPress
  • アセンブリ
  • ラムダ式
  • 監視
  • 設計
  • Amazon Linux 2023
  • Delegate
  • Docker
  • IDisposable
  • Ipset
  • Iptables
  • LINQ to Objects
  • Migration
  • OPCache
  • Pointer
  • Reflection
  • System.Collections.Specialized
  • Unsafe
Powered by Hugo & Explore Theme.