TECH I.S.

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


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

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


「php.ini」ファイルの構成

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

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

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"。フォームを送信するときに使用するcontent-typeを指定します。

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

その他の注意事項:

  • <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 ファイルシステム リファレンスを参照して下さい。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細