PHPチュートリアル

PHPホーム PHPイントロ PHPインストール PHP構文 PHPコメント PHP変数 PHPエコー/印刷 PHPデータ型 PHP文字列 PHP番号 PHP数学 PHP定数 PHP演算子 PHP If ... Else ... Elseif PHPスイッチ PHPループ PHP関数 PHP配列 PHPスーパーグローバル PHP正規表現

PHPフォーム

PHPフォーム処理 PHPフォームの検証 PHPフォームが必要 PHPフォームのURL / Eメール PHPフォームの完了

PHP Advanced

PHPの日付と時刻 PHPインクルード PHPファイルの処理 PHPファイルのオープン/読み取り PHPファイルの作成/書き込み PHPファイルのアップロード PHPクッキー PHPセッション PHPフィルター PHPフィルターアドバンスト PHPコールバック関数 PHP JSON PHPの例外

PHPOOP _

PHPOOPとは PHPクラス/オブジェクト PHPコンストラクター PHPデストラクタ PHPアクセス修飾子 PHPの継承 PHP定数 PHP抽象クラス PHPインターフェース PHPの特性 PHP静的メソッド PHPの静的プロパティ PHP名前空間 PHPIterables

MySQLデータベース

MySQLデータベース MySQLコネクト MySQL Create DB MySQLテーブルの作成 MySQLの挿入データ MySQLは最後のIDを取得します MySQL Insert Multiple MySQLを準備しました MySQL Select Data MySQL Where MySQL Order By MySQLデータの削除 MySQLアップデートデータ MySQL制限データ

PHP XML

PHPXMLパーサー PHPSimpleXMLパーサー PHPSimpleXML-取得 PHP XMLExpat PHP XML DOM

PHP -AJAX

AJAXイントロ AJAX PHP AJAXデータベース AJAX XML AJAXライブ検索 AJAXポール

PHPの

PHPの例 PHPコンパイラ PHPクイズ PHP演習 PHP証明書

PHPリファレンス

PHPの概要 PHP配列 PHPカレンダー PHPの日付 PHPディレクトリ PHPエラー PHP例外 PHPファイルシステム PHPフィルター PHP FTP PHP JSON PHPキーワード PHP Libxml PHPメール PHP数学 PHPその他 PHP MySQLi PHPネットワーク PHP出力制御 PHP正規表現 PHP SimpleXML PHPストリーム PHP文字列 PHP変数の処理 PHPXMLパーサー PHP Zip PHPタイムゾーン

PHPファイルのアップロード


PHPを使用すると、サーバーにファイルを簡単にアップロードできます。

ただし、簡単に危険が伴うため、ファイルのアップロードを許可する場合は常に注意してください。


「php.ini」ファイルを構成する

まず、ファイルのアップロードを許可するようにPHPが構成されていることを確認します。

file_uploads「php.ini」ファイルでディレクティブを検索し、 Onに設定します。

file_uploads = On

HTMLフォームを作成する

次に、ユーザーがアップロードする画像ファイルを選択できるHTMLフォームを作成します。

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

上記のHTMLフォームで従うべきいくつかのルール:

  • フォームでmethod = "post"が使用されていることを確認してください
  • フォームには、次の属性も必要です:enctype = "multipart / form-data"。フォームを送信するときに使用するコンテンツタイプを指定します

上記の要件がないと、ファイルのアップロードは機能しません。

その他の注意事項:

  • <input>タグのtype = "file"属性は、入力フィールドをファイル選択コントロールとして表示し、入力コントロールの横に[参照]ボタンがあります

上記のフォームは、次に作成する「upload.php」というファイルにデータを送信します。



アップロードファイルのPHPスクリプトを作成する

「upload.php」ファイルには、ファイルをアップロードするためのコードが含まれています。

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

PHPスクリプトの説明:

  • $ target_dir = "uploads /"-ファイルが配置されるディレクトリを指定します
  • $ target_fileは、アップロードするファイルのパスを指定します
  • $ uploadOk = 1はまだ使用されていません(後で使用されます)
  • $ imageFileTypeは、ファイルのファイル拡張子を保持します(小文字)
  • 次に、画像ファイルが実際の画像なのか偽の画像なのかを確認します

注:「upload.php」ファイルが存在するディレクトリに「uploads」という新しいディレクトリを作成する必要があります。アップロードされたファイルはそこに保存されます。


ファイルがすでに存在するかどうかを確認します

これで、いくつかの制限を追加できます。

まず、ファイルが「uploads」フォルダにすでに存在するかどうかを確認します。含まれている場合は、エラーメッセージが表示され、$ uploadOkが0に設定されます。

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

ファイルサイズを制限する

上記のHTMLフォームのファイル入力フィールドの名前は「fileToUpload」です。

次に、ファイルのサイズを確認します。ファイルが500KBより大きい場合、エラーメッセージが表示され、$ uploadOkが0に設定されます。

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

ファイルの種類を制限する

以下のコードでは、ユーザーはJPG、JPEG、PNG、およびGIFファイルのみをアップロードできます。他のすべてのファイルタイプでは、$ uploadOkを0に設定する前にエラーメッセージが表示されます。

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

完全なアップロードファイルのPHPスクリプト

完全な「upload.php」ファイルは次のようになります。

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

完全なPHPファイルシステムリファレンス

ファイルシステム関数の完全なリファレンスについては、完全な PHPファイルシステムリファレンスにアクセスしてください。