PHP を通じて、ファイルをサーバーにアップロードできます。
この章の例はテスト プロジェクトで完成しており、ディレクトリ構造は次のとおりです。
test|-----upload # ファイルアップロード用ディレクトリ|-----form.html # フォームファイル|-----upload_file.php # PHP アップロードコード
ユーザーがフォームからファイルをアップロードできるようにすると、非常に便利です。
ファイルをアップロードするための次の HTML フォームを見てください。
<html><head><meta charset="utf-8"><title>コーダー チュートリアル (codercto.com)</title></head><body><form action="upload_file.php" method=" post " enctype="multipart/form-data"> <label for="file">ファイル名:</label> <input type="file" name="file" id="file"><br> <入力タイプ="送信" 名前="送信" value="送信"></form></body></html>
上記のコードを form.html ファイルに保存します。
上記の HTML フォームに関する注意事項を以下に示します。
<form>タグのenctype属性は、フォームの送信時に使用するコンテンツ タイプを指定します。フォームにファイルコンテンツなどのバイナリデータが必要な場合は、「 multipart/form-data 」を使用します。
<input>タグのtype="file"属性は、入力をファイルとして処理することを指定します。たとえば、ブラウザでプレビューすると、入力ボックスの横に参照ボタンが表示されます。
注:ユーザーにファイルのアップロードを許可すると、セキュリティ上の大きなリスクが生じます。信頼できるユーザーのみにファイルのアップロード操作を許可してください。
「upload_file.php」ファイルには、ファイルをアップロードするためのコードが含まれています。
<?phpif ($_FILES["file"]["error"] > 0){ echo "エラー:" . $_FILES["file"]["error"] . "<br>";}else{ echo "アップロード ファイル名: " . $_FILES["file"]["name"] . "<br>"; echo "ファイル タイプ: " . $_FILES["file"]["type"] . "<br>"; echo "ファイル サイズ: " . ($_FILES["file"]["size"] / 1024) " kB<br>"; echo "ファイルが一時的に保存される場所: " 。 $_FILES[ "ファイル"]["tmp_name"];}?>
PHP のグローバル配列 $_FILES を使用すると、クライアント コンピューターからリモート サーバーにファイルをアップロードできます。
最初のパラメータはフォームの入力名で、2 番目の添え字は「name」、「type」、「size」、「tmp_name」、「error」のいずれかです。以下に示すように:
$_FILES["file"]["name"] - アップロードされたファイルの名前
$_FILES["file"]["type"] - アップロードされたファイルのタイプ
$_FILES["file"]["size"] - アップロードされたファイルのサイズ (バイト単位)
$_FILES["file"]["tmp_name"] - サーバーに保存されているファイルの一時コピーの名前
$_FILES["file"]["error"] - ファイルのアップロードによって発生したエラー コード
これはファイルをアップロードする非常に簡単な方法です。セキュリティ上の理由から、ファイルのアップロードを許可するユーザーに制限を追加する必要があります。
このスクリプトでは、ファイルのアップロードに制限を追加します。ユーザーがアップロードできるのは .gif、.jpeg、.jpg、.png ファイルのみであり、ファイル サイズは 200 KB 未満である必要があります。
<?php// アップロードできる画像のサフィックス $allowedExts = array("gif", "jpeg", "jpg", "png");$temp =explode(".", $_FILES["file"][" name "]);$extension = end($temp); // ファイルのサフィックスを取得します if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["ファイル"]["タイプ"] == "画像/jpeg")|| ($_FILES["ファイル"]["タイプ"] == "画像/jpg")|| ($_FILES[ "ファイル"]["タイプ"] == "画像/pjpeg")|| ($_FILES["ファイル"]["タイプ"] == "画像/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // 200 kb 未満&& in_array($extension, $ allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "エラー:: " 。 $_FILES["ファイル"]["エラー"] . "<br>" } else { echo "ファイル名をアップロードします: " . $_FILES["ファイル"]["名前"] ; "ファイルの種類: " . $_FILES["ファイル"]["タイプ"] . "<br>"; ファイルのサイズ: " . ($_FILES["ファイル"]["サイズ"] / 1024) . " kB<br>"; echo "ファイルが一時的に保存される場所: " . $_FILES["file"]["tmp_name"]; echo "不正なファイル形式";}?>
上記の例では、アップロードされたファイルの一時コピーをサーバーの PHP 一時フォルダーに作成します。
この一時コピーは、スクリプトが終了すると消えます。アップロードされたファイルを保存するには、それを別の場所にコピーする必要があります。
<?php// アップロードできる画像のサフィックス $allowedExts = array("gif", "jpeg", "jpg", "png");$temp =explode(".", $_FILES["file"][" name "]);echo $_FILES["file"]["size"];$extension = end($temp); // ファイルのサフィックスを取得する((($_FILES["ファイル"]["タイプ"] == "画像/gif")|| ($_FILES["ファイル"]["タイプ"] == "画像/jpeg")|| ($ _FILES["ファイル"]["タイプ"] == "画像/jpg")|| ($_FILES["ファイル"]["タイプ"] == "画像/pjpeg")|| ($_FILES["ファイル"]["タイプ"] == "画像/x-png")|| ($_FILES["ファイル"]["タイプ"] == "画像/png"))&& ($ _FILES["file"]["size"] < 204800) // 200 kb 未満&& in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "エラー: " . $_FILES["file"]["error"] "<br>" } else { echo "ファイル名をアップロードします。 : " . $_FILES["file"]["name"] . "<br>"; echo "ファイルの種類: " . $_FILES["file"]["type"] . "<br>"; echo "ファイル サイズ: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "ファイルが一時的に保存される場所: " . ["tmp_name "] . "<br>"; // 現在のディレクトリの下にファイルが存在するかどうかを確認します。 // アップロード ディレクトリがない場合は、アップロード ディレクトリの権限が 777 である場合に作成する必要があります。 (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] " ファイルはすでに存在します。 "; } else { // アップロード ディレクトリにファイルが存在しない場合は、アップロード ディレクトリにファイルをアップロードします move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "名前"]); echo "ファイルは次の場所に保存されています: " . "upload/" . $_FILES["ファイル"]["名前"]; } }}else{ echo "不正なファイル形式";}?>
上記のスクリプトは、ファイルが既に存在するかどうかを確認し、存在しない場合は、ファイルを「upload」という名前のディレクトリにコピーします。