PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで複数のファイルをアップロードしてフォルダに保存する方法

複数ファイルアップロードの基本手順

PHPで複数のファイルをまとめてアップロードし、サーバー上のフォルダに保存するには、以下の手順に従って実装します。

  • input要素のname属性は配列形式で定義します(例:name="upload[]")。
  • input要素には multiple="multiple"、または単に multiple 属性を指定して、複数選択を可能にします。
  • PHP側では $_FILES['inputName']['param'][index] という構文で各ファイルの情報にアクセスします。
  • 配列には空文字列が含まれる場合があるため、空のファイル名やパスのチェックが必要です。これには、count() の前に array_filter() を使うと効果的です。

実装コードの例

以下に、実際のコード例を示します。

HTML側の記述

<input name="upload[]" type="file" multiple="multiple" />

PHP側の記述

$files = array_filter($_FILES['upload']['name']); // ファイル処理の前に、このように空の要素を除外しておく

// 配列内のアップロード済みファイル数をカウント
$total_count = count($_FILES['upload']['name']);

// 各ファイルに対してループ処理を実行
for( $i=0 ; $i < $total_count ; $i++ ) {
    // 一時ファイルのパスを取得
    $tmpFilePath = $_FILES['upload']['tmp_name'][$i];
    // ファイルパスが存在することを確認
    if ($tmpFilePath != ""){
        // 保存先の新しいファイルパスを設定
        $newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];
        // 一時ディレクトリからファイルを移動(アップロード完了)
        if(move_uploaded_file($tmpFilePath, $newFilePath)) {
            // 成功時のその他の処理をここに記述
        }
    }
}

コードの処理の流れ

このコードでは、まずアップロード対象のファイル一覧を取得し、必要なファイルの総数を変数「$total_count」に格納します。続いて、各ファイルの一時的な保存パスを取得し、for文によるループ処理でファイルを1つずつ保存先フォルダ(ここでは「uploadFiles」ディレクトリ)へ移動させていきます。move_uploaded_file() 関数は、HTTP POSTでアップロードされたファイルのみを移動の対象とするため、セキュリティ面でも必須の関数です。

補足:実装時の注意点

  • 保存先フォルダ(uploadFiles)が存在しない場合は、あらかじめ作成しておくか、mkdir() で動的に生成する必要があります。
  • 同名ファイルの上書きを防ぎたい場合は、ファイル名に日時やユニークID(uniqid() など)を付加すると安全です。
  • 悪意あるファイルのアップロードを防ぐため、拡張子やMIMEタイプの検証、ファイルサイズの上限チェックも併せて実装することをおすすめします。
  1. Windows 10のコマンドプロンプトを使ってファイルやフォルダを安全に隠す方法

    コンピューターを使用している人なら誰でも、個人的なファイルやフォルダには非常に敏感なものです。パソコンにどんなデータを保存していても、特定のコンテンツを他人の目から隠したいと思う理由はいくらでも見つかります。また、誤って削除されたり変更されたりするのを防ぎたいファイルやフォルダもあるかもしれません。こうしたニーズに応えるため、Windowsにはファイルやフォルダを非表示にする便利な機能が標準で用意されています。 Windows 10でファイルやフォルダを非表示にする方法(一般的な方法) 初心者レベルを少し超えたユーザーなら、誰でも知っているのがこの従来の方法です。まず、非表示にしたいファイルや

  2. Windowsで削除できないファイル・フォルダを強制削除する方法|コマンドとフリーソフト徹底解説

    パソコンを快適に使い続けるためには、不要ファイルや重複データ、ジャンクファイルをこまめに整理することが欠かせません。これらはストレージ容量を無駄に消費するだけでなく、作業効率や使用感にも悪影響を及ぼします。しかし、いざ不要なファイルやフォルダを削除しようとしても、思うように消せない経験はありませんか?管理者権限を持っていても削除できず、頭を抱えた方も多いはずです。こうした現象の原因の一つが、トロイの木馬やマルウェアなどの感染です。即座に深刻な被害をもたらすものではないものの、ファイルやフォルダを破損させ、削除不能な状態にしてしまうことがあります。ファイルやフォルダが削除できない主な原因マルウェ