PHPファイルのアップロード
PHP ファイルのアップロード
PHP を通じて、ファイルをサーバーにアップロードできます。
この章の例は、テスト プロジェクトの下で完成します。 ディレクトリ構(gòu)造は次のとおりです:
test
|-----upload .
ファイルの作成アップロード フォーム
は、ユーザーがフォームからファイルをアップロードできるようにするのに非常に便利です。
以下のファイルをアップロードするための HTML フォームをご覧ください:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</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> <input type="submit" name="submit" value="提交"> </form> </body> </html>
上記のコードを form.html ファイルに保存します。上記の HTML フォームの注意事項(xiàng)の一部を以下に示します。
· & lt; form & gt; フォームの送信時(shí)に使用するコンテンツ タイプを指定します。フォームにファイル コンテンツなどのバイナリ データが必要な場(chǎng)合は、「multipart/form-data」を使用します。
· <input> タグの type="file" 屬性は、入力をファイルとして処理することを指定します。たとえば、ブラウザでプレビューすると、入力ボックスの橫に參照ボタンが表示されます。
注: ユーザーにファイルのアップロードを許可すると、セキュリティ上の大きなリスクが生じます。信頼できるユーザーのみにファイルのアップロード操作を許可してください。
アップロード スクリプトを作成します「upload_file.php」ファイルには、ファイルをアップロードするためのコードが含まれています:
<?php if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:" . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"]; } ?>
PHP のグローバル配列 $_FILES を使用すると、クライアント コンピューターからリモート サーバーにファイルをアップロードできます。
最初のパラメータはフォームの入力名で、2 番目の添え字は「name」、「type」、「size」、「tmp_name」、または「error」です。以下に示すように:anute buse buse '' '' s out out outを使用して使用して使用して使用します。はいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはい... "] - サーバーに保存されているファイルの一時(shí)コピーの名前 · ["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["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>
アップロードしたファイルを保存します
上記の例では、アップロードされたファイルの一時(shí)コピーをサーバーの PHP 一時(shí)フォルダーに作成します。
この一時(shí)コピーファイルはスクリプトが終了すると消えます。アップロードされたファイルを保存するには、それを別の場(chǎng)所にコピーする必要があります:
<?php // 允許上傳的圖片后綴 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension = end($temp); // 獲取文件后綴名 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"] . "<br>"; // 判斷當(dāng)期目錄下的 upload 目錄是否存在該文件 // 如果沒有 upload 目錄,你需要?jiǎng)?chuàng)建它,upload 目錄權(quán)限為 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " 文件已經(jīng)存在。 "; } else { // 如果 upload 目錄不存在該文件則將文件上傳到 upload 目錄下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件存儲(chǔ)在: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "非法的文件格式"; } ?>
上記のスクリプトは、ファイルが既に存在するかどうかを確認(rèn)し、存在しない場(chǎng)合は、ファイルを「upload」という名前のディレクトリにコピーします。