ホームページ バックエンド開発 PHPチュートリアル PHP でファイルのアップロードを処理するにはどうすればよいですか?

PHP でファイルのアップロードを処理するにはどうすればよいですか?

May 11, 2023 pm 10:31 PM
phpファイルのアップロード ファイル処理 フォーム処理

インターネット技術の継続的な発展に伴い、ファイルのアップロード機能は多くの Web サイトで不可欠な部分になりました。 PHP 言語では、いくつかのクラス ライブラリと関数を通じてファイルのアップロードを処理できます。この記事では、PHP でのファイルのアップロード処理方法に焦点を当てます。

1. フォーム設定

HTML フォームでは、ファイルのアップロードをサポートするために enctype 属性を「multipart/form-data」に設定する必要があります。コードは次のとおりです。

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="上传"/>
</form>
ログイン後にコピー

このうち、input タグの type 属性は「file」、name 属性はアップロードするファイルの名前を指定する「file」です。

2. PHP ファイルのアップロード処理

PHP では、$_FILES グローバル変数を使用してファイルのアップロードを処理できます。フォームにアップロードされたファイルの名前が「file」であるとすると、PHP では、$_FILES['file'] を通じてアップロードされたファイルの情報を取得できます。

$_FILES 配列には 5 つの要素が含まれます。

  1. name: アップロードされたファイルの名前。
  2. type: アップロードされたファイルのタイプ。
  3. tmp_name: アップロードされたファイルの一時ストレージ パス。
  4. error: ファイルのアップロード時のエラー コード。
  5. size: アップロードされたファイルのサイズ (バイト単位)。

次に、move_uploaded_file() 関数を使用して、アップロードされたファイルを指定したフォルダーに移動します。コードは次のとおりです。

$target_dir = "uploads/";   //上传文件的目标文件夹
$target_file = $target_dir . basename($_FILES["file"]["name"]);   //上传文件的完整路径
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "文件上传成功!";
} else {
    echo "文件上传失败!";
}
ログイン後にコピー

上記のコードでは、$target_dir 変数はアップロードされたファイルのターゲット フォルダーを指定し、$target_file 変数にはアップロードされたファイルのフル パスが含まれています。 move_uploaded_file() 関数を使用して、一時ファイルを指定したディレクトリに移動できます。移動が成功した場合は true を返し、そうでない場合は false を返します。

ファイルをアップロードするとき、ファイルのセキュリティを確保するために、アップロードされたファイルに対して特定のチェックとフィルターを実行する必要があります。たとえば、is_uploaded_file() 関数を使用して、アップロードされたファイルが本当にクライアントからのものであるかどうかを確認できます。コードは次のとおりです。

if(is_uploaded_file($_FILES['file']['tmp_name'])){
    //处理上传文件
}else{
    echo "非法的文件上传!";
}
ログイン後にコピー

getimagesize() 関数を使用して、アップロードされた画像の幅と高さを取得することもできます。コードは次のとおりです:

if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    $image_info = getimagesize($_FILES['file']['tmp_name']);
    echo "图片宽度:".$image_info[0]."<br/>";
    echo "图片高度:".$image_info[1]."<br/>";
    echo "图片类型:".$image_info[2]."<br/>";
} else {
    echo "非法的文件上传!";
}
ログイン後にコピー

3. アップロードされるファイルのサイズを制限する

PHP のデフォルトの制限は、アップロードできるファイル サイズが 2M ですが、これを変更することで変更することもできます。構成ファイルを変更するか、PHP 制限で設定します。たとえば、php.ini ファイルで、upload_max_filesize と post_max_size を設定して、アップロードされるファイルのサイズを制限できます。

PHP でアップロードされるファイルの最大値を設定したい場合は、ini_set() 関数を使用して php.ini の設定を変更できます。コードは次のとおりです。

//设置上传文件的最大值为10M
ini_set("upload_max_filesize","10M");
ini_set("post_max_size","10M");
ログイン後にコピー

$_SERVER['CONTENT_LENGTH'] を使用してクライアント リクエストのヘッダー情報のコンテンツの長さを取得し、アップロードされたファイルが指定されたサイズを超えているかどうかを判断することもできます。コードは次のとおりです。

if($_SERVER['CONTENT_LENGTH'] > MAX_SIZE){
    echo "上传文件超过了指定大小!";
}
ログイン後にコピー

フロントエンド部分では、jQuery.uploadFile.js プラグインを使用して、アップロードされるファイルのサイズを制限することもできます。コードは次のとおりです:

<input type="file" name="file" id="file"/>
<script src="js/jquery-1.12.4.min.js"></script>
<script src="js/jquery.uploadfile.js"></script>
<script>
    $("#file").uploadFile({
        url: "upload.php",   //处理文件上传的PHP脚本
        maxFileSize: 1024*1024*5,   //最大上传文件的大小,此处为5M
    });
</script>
ログイン後にコピー

4. ファイル アップロード エラーの処理

ファイルをアップロードするときに、いくつかのエラーが発生する可能性があります。たとえば、アップロードされたファイルが大きすぎる、アップロードされたファイルの種類が許可されていない、ターゲット フォルダーが存在しないなどです。ユーザーエクスペリエンスとファイルアップロードの効率を向上させるために、これらのエラーを処理する必要があります。

一部のエラー コードは、エラーの判断と処理を容易にするために PHP で定義されています。例:

  1. UPLOAD_ERR_OK (0): アップロードは成功しました。
  2. UPLOAD_ERR_INI_SIZE(1): アップロードされたファイルは php.ini の設定を超えています。
  3. UPLOAD_ERR_FORM_SIZE(2): アップロードされたファイルは、フォームの MAX_FILE_SIZE で指定された値を超えています。
  4. UPLOAD_ERR_PARTIAL(3): アップロードされたファイルの一部のみがアップロードされました。
  5. UPLOAD_ERR_NO_FILE(4): ファイルはアップロードされませんでした。
  6. UPLOAD_ERR_NO_TMP_DIR(6): 一時フォルダーが見つかりません。
  7. UPLOAD_ERR_CANT_WRITE(7): ファイルの書き込みに失敗しました。

switch ステートメントを使用して、これらのエラーを処理できます。コードは次のとおりです。

switch ($_FILES['file']['error']) {
    case UPLOAD_ERR_OK:
        //上传成功
        break;
    case UPLOAD_ERR_INI_SIZE:
        echo "上传的文件超过了php.ini中的配置。";
        break;
    case UPLOAD_ERR_FORM_SIZE:
        echo "上传的文件超过了表单中的MAX_FILE_SIZE指定的值。";
        break;
    case UPLOAD_ERR_PARTIAL:
        echo "上传的文件只有部分被上传。";
        break;
    case UPLOAD_ERR_NO_FILE:
        echo "没有文件被上传。";
        break;
    case UPLOAD_ERR_NO_TMP_DIR:
        echo "找不到临时文件夹。";
        break;
    case UPLOAD_ERR_CANT_WRITE:
        echo "文件写入失败。";
        break;
    default:
        echo "未知错误。";
        break;
}
ログイン後にコピー

アップロードするファイルの種類を特定の種類に限定したい場合は、in_array() 関数を使用して判断できます。コードは次のとおりです:

$allowed_types = array('jpg', 'jpeg', 'gif', 'png');   //允许上传的文件类型
$filename = $_FILES['file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);   //获取文件类型后缀
if (!in_array($ext, $allowed_types)) {
    echo "不允许上传此类型的文件。";
}
ログイン後にコピー

5. 概要

ファイルのアップロードは Web 開発における一般的な問題であり、PHP にはファイルのアップロードを処理するためのさまざまなメソッドと関数が用意されています。上記で紹介した方法に加えて、PHP File Uploader (https://www.github.com/verot/class.upload.php) や FineUploader (https:/) など、ファイルのアップロード処理に PHP クラス ライブラリを使用することもできます。 /fineuploader.com/)。どの方法を使用する場合でも、アップロードされたファイルのセキュリティと有効性を確保する必要があります。

以上がPHP でファイルのアップロードを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP フォーム処理: フォームのリセットとデータのクリア PHP フォーム処理: フォームのリセットとデータのクリア Aug 07, 2023 pm 03:05 PM

PHP フォーム処理: フォームのリセットとデータのクリア Web 開発において、フォームは非常に重要な部分であり、ユーザーが入力したデータを収集するために使用されます。ユーザーがフォームを送信した後、通常はフォーム データを処理し、必要な操作をいくつか実行します。しかし、実際の開発では、フォームをリセットしたり、フォームデータをクリアしたりする必要がある場面に遭遇することがよくあります。この記事では、PHP を使用してフォームのリセットとデータのクリア機能を実装する方法と、対応するコード例を紹介します。フォームのリセット まず、フォームのリセットの概念を理解する必要があります。ユーザーが

PHP 7 フォーム処理ガイド: $_REQUEST 配列を使用してフォーム データを取得する方法 PHP 7 フォーム処理ガイド: $_REQUEST 配列を使用してフォーム データを取得する方法 Aug 01, 2023 pm 10:08 PM

PHP7 フォーム処理ガイド: $_REQUEST 配列を使用してフォーム データを取得する方法 概要: ユーザーが Web ページ上のフォームに記入して送信するとき、サーバー側のコードはフォーム データを処理する必要があります。 PHP7 では、開発者は $_REQUEST 配列を使用してフォーム データを簡単に取得できます。この記事では、$_REQUEST 配列を正しく使用してフォーム データを処理する方法を紹介し、読者の理解を深めるためにいくつかのコード例を示します。 1. $_REQUEST 配列を理解します: $_REQUES

PHP フォーム処理: フォーム データの並べ替えとランキング PHP フォーム処理: フォーム データの並べ替えとランキング Aug 09, 2023 pm 06:01 PM

PHP フォーム処理: フォーム データの並べ替えとランク付け Web 開発では、フォームは一般的なユーザー入力方法です。ユーザーからフォーム データを収集した後、通常はデータを処理して分析する必要があります。この記事では、PHP を使用してフォーム データを並べ替えてランク付けし、ユーザーが送信したデータをより適切に表示および分析する方法を紹介します。 1. フォームデータの並び替え ユーザーから送信されたフォームデータを収集する際、データの順序が必ずしも当社の要件を満たしていないことが判明する場合があります。特定のルールに従って表示または分割する必要があるもの

Laravel でのファイルのアップロードと処理: ユーザーがアップロードしたファイルの管理 Laravel でのファイルのアップロードと処理: ユーザーがアップロードしたファイルの管理 Aug 13, 2023 pm 06:45 PM

Laravel でのファイルのアップロードと処理: ユーザーがアップロードしたファイルの管理 はじめに: ファイルのアップロードは、最新の Web アプリケーションにおける非常に一般的な機能要件です。 Laravel フレームワークでは、ファイルのアップロードと処理が非常にシンプルかつ効率的になります。この記事では、ファイルアップロードの検証、保存、処理、表示など、Laravelでユーザーがアップロードしたファイルを管理する方法を紹介します。 1. ファイルのアップロード ファイルのアップロードとは、クライアントからサーバーにファイルをアップロードすることを指します。 Laravel では、ファイルのアップロードは非常に簡単に処理できます。初め、

PHP フォーム処理: フォーム データのエクスポートと印刷 PHP フォーム処理: フォーム データのエクスポートと印刷 Aug 09, 2023 pm 03:48 PM

PHP フォーム処理: フォーム データのエクスポートと印刷 Web サイト開発において、フォームは不可欠な部分です。ユーザーが Web サイト上のフォームに記入して送信すると、開発者はフォーム データを処理する必要があります。この記事では、PHP を使用してフォーム データを処理する方法を紹介し、データを Excel ファイルにエクスポートして印刷する方法を示します。 1. フォームの送信と基本処理 まず、ユーザーがデータを入力して送信するための HTML フォームを作成する必要があります。名前、電子メール、コメントを含む簡単なフィードバック フォームがあるとします。 HTM

PHP を使用してフォームのインライン編集機能を処理する方法 PHP を使用してフォームのインライン編集機能を処理する方法 Aug 10, 2023 pm 08:57 PM

PHP を使用してフォームのインライン編集機能を処理する方法 はじめに: フォームは Web 開発で一般的に使用される要素の 1 つであり、ユーザーが入力したデータを収集するために使用されます。インライン編集機能により、ユーザーはフォーム内で直接データを即座に編集して保存できるため、ユーザーエクスペリエンスと運用効率が向上します。この記事では、PHP を使用してフォームのインライン編集機能を処理する方法を紹介し、対応するコード例を添付します。 1. HTML 部分 まず、インライン編集機能を含むフォームを作成する必要があります。 HTMLではコンテンツを使用できます

Vue フォーム処理を使用してフォームの無効化と有効化の制御を実装する方法 Vue フォーム処理を使用してフォームの無効化と有効化の制御を実装する方法 Aug 11, 2023 am 11:45 AM

Vue フォーム処理を使用してフォームの無効化と有効化の制御を実装する方法 Web 開発において、フォームは不可欠なコンポーネントの 1 つです。場合によっては、特定の条件に基づいてフォームの無効状態と有効状態を制御する必要があります。 Vue は、この状況に対処するための簡潔かつ効果的な方法を提供します。この記事では、Vue を使用してフォームの無効化と有効化の制御を実装する方法を詳しく紹介します。まず、基本的な Vue インスタンスとフォームを作成する必要があります。基本的な HTML と Vue のコード例は次のとおりです: &lt;divid=&

PHP ファイル処理の開始: 読み取りと書き込みのステップバイステップ ガイド PHP ファイル処理の開始: 読み取りと書き込みのステップバイステップ ガイド Sep 06, 2023 am 09:58 AM

PHP ファイル処理の入門: 読み取りと書き込みのためのステップバイステップ ガイド Web 開発では、ユーザーがアップロードしたファイルを読み取る場合でも、後で使用するために結果をファイルに書き込む場合でも、ファイル処理は一般的なタスクです。 PHP ドキュメント処理は非常に重要です。この記事では、PHP でファイルの読み取りと書き込みの基本手順を紹介する簡単なガイドを提供し、参照用のコード例を添付します。 PHP でファイルを読み取る場合、fopen() 関数を使用してファイルを開いてファイル リソース (ファイル) を返すことができます。

See all articles