ホームページ >バックエンド開発 >PHPチュートリアル >PHP でファイルを正しくアップロードし、潜在的なエラーを処理する方法は?

PHP でファイルを正しくアップロードし、潜在的なエラーを処理する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 13:02:18564ブラウズ

How to Correctly Upload Files in PHP and Handle Potential Errors?

PHP を使用したファイルのアップロード

指定したフォルダーへのファイルのアップロードは、多くの Web アプリケーションで一般的なタスクです。この質問では、このタスクを達成することを目的とした単純な PHP コード ブロックについて説明します。

$folder = "upload/";
if (is_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'])) {   
    if (move_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'], $folder . $HTTP_POST_FILES['filename']['name'])) {
         echo "File uploaded";
    } else {
         echo "File not moved to destination folder. Check permissions";
    };
} else {s
     echo "File is not uploaded";
}; 

ただし、実行時にエラーが発生します:

Notice: Undefined variable: HTTP_POST_FILES in C:\wamp\www\sdg\import\ips.php on line 3

解決策:

このエラーは、非推奨の変数 $HTTP_POST_FILES を使用することが原因で発生します。代わりに、$_FILES:

$folder = "upload/";
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {   
    if (move_uploaded_file($_FILES['filename']['tmp_name'], $folder . $_FILES['filename']['name'])) {
         echo "File uploaded";
    } else {
         echo "File not moved to destination folder. Check permissions";
    };
} else {s
     echo "File is not uploaded";
}; 

拡張 PHP コード:

次の拡張 PHP コードは、型チェックやファイル サイズ検証などの改善された機能を提供します:

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png'];

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        $msg = "Type is not allowed";
    } 
    // Check if file exists
    elseif (file_exists($target_file)) {
        $msg = "Sorry, file already exists.";
    } 
    // Check file size
    elseif ($_FILES["fileToUpload"]["size"] > 5000000) {
        $msg = "Sorry, your file is too large.";
    } 
    // Move file
    elseif (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        $msg = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";
    }
}
?>

HTMLコード:

<form action="upload.php" method="post">

この改良されたコードは、許可されたファイル タイプのみがアップロードされることを保証し、ファイル名の重複を防ぎ、サーバーの過負荷を避けるためにファイル サイズを制限します。

以上がPHP でファイルを正しくアップロードし、潜在的なエラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。