PHP

アップロードしたファイルを特定のディレクトリに保存する

  1. 最終更新日:
  2. 公開日:

move_uploaded_file関数を使って、アップロードされたファイルを指定したパスに保存する方法について解説します。

この記事のポイント

  • アップロードされた仮ファイルを指定したファイル名で保存する
  • ファイルの保存先となるディレクトリのパーミッションに注意する

アップロードされた仮ファイルを本ファイルとして保存

move_uploaded_file関数は、アップロードされて作成された仮ファイルを指定したパスのディレクトリに移動します。

PHP コード例

move_uploaded_file( $_FILES['file1']['tmp_name'], './upload/pic.jpg');

第1パラメータには仮ファイルのパス、第2パラメータに保存先のパスを指定します。
保存先のパスはディレクトリのみではなく、拡張子を含めたファイル名を指定する必要がある点に注意してください。
もしアップロード先に同名のファイルがある場合は上書きします。

指定したパスへのファイルの移動が成功するとtrue、失敗した場合はfalseを返します。

Note

move_uploaded_file関数でファイルを保存するには、指定したパスのディレクトリがパーミッション「実行」を許可している必要があります。

使用例

次のようなHTMLのフォームから、画像ファイルが送信されてくることを想定します。

フォームのHTMLコード例

<form method="post" action="index.php" enctype="multipart/form-data">
  <input type="file" name="file1">
  <input type="submit" value="送信">
</form>

フォームの送信先である「index.php」でファイルを受け取り、move_uploaded_file関数を使って指定したパスに保存します。

index.php

// ファイルへのパス
$path = './test/';

// ファイルがアップロードされているかと、POST通信でアップロードされたかを確認
if( !empty($_FILES['file1']['tmp_name']) && is_uploaded_file($_FILES['file1']['tmp_name']) ) {

  // ファイルを指定したパスへ保存する
  if( move_uploaded_file( $_FILES['file1']['tmp_name'], $path.'upload_pic.jpg') ) {
    echo 'アップロードされたファイルを保存しました。';
  } else {
    echo 'アップロードされたファイルの保存に失敗しました。';
  }
}

empty関数is_uploaded_file関数を使って、ファイルがPOST通信でアップロードされているかを確認します。
ここで問題ない場合、仮ファイルをmove_uploaded_file関数で「upload_pic.jpg」というファイル名で保存します。

なお、ファイル形式(MIMEタイプ)やサイズなどを確認する必要がある場合は、別記事「ファイルの種類(MIMEタイプ)を確認する」や「ファイルサイズを取得する」を参照ください。

記事一覧

関連記事