ホームページ  >  記事  >  バックエンド開発  >  PHPファイルアップロード実装コードの詳細説明

PHPファイルアップロード実装コードの詳細説明

WBOY
WBOYオリジナル
2016-06-20 13:05:061414ブラウズ

PHP ファイルアップロード実装コードの詳細説明

ファイルアップロード機能は、HTML ページと PHP 処理部分の 2 つの部分で構成されます。

HTML ページでは主にユーザーがアップロードするファイルを選択でき、php 部分ではサーバー上の指定されたディレクトリにファイルを保存できます。

1. HTML 部分 Upload.html

<p><html>   </p><p> <head>        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">    </head>    </p><p><body>        上传Demo:        </p><p><form action="upload.php" method="post" enctype="multipart/form-data">            </p><p><input type="file" name="img" />            </p><p><input type="submit" name="submit" value="上传" />        </p><p></form>    </p><p></body></p><p></html></p>

説明:Input タグ内の
1. Type="file" は、入力がファイルとして処理されることを示します。ファイル。

2.Enctype は、このフォームを送信するときに使用するコンテンツ タイプを指定します。ファイルコンテンツなど、フォームにバイナリデータが必要な場合、ファイルをアップロードする場合は、この属性が必要です。

2. PHP 部分の Upload.php

<p><?php</p><p>$DST_DIR = '/data/upload/';if ($_FILES['img']['name'] != '') {    </p><p>if ($_FILES['img']['error'] > 0) {</p><p>        echo "上传失败";</p><p> }    else { </p><p>       if (move_uploaded_file($_FILES['img']['tmp_name'], $DST_DIR.$_FILES['img']['name'])) {</p><p>            echo "上传成功"; </p><p>       }   else {  </p><p>          echo "上传失败"; </p><p>       }    }}else {</p><p>    echo "请上传文件";</p><p>}</p>

PHP ファイルアップロード実装コードの説明:

1. グローバル変数 $_FILE

この配列には、アップロードされたすべてのファイル情報が含まれます。
上記の例に示すように、ファイル アップロード フィールドの名前が img であると仮定します。次に、
$_FILES['img']['name']
クライアントによってアップロードされたファイルの元の名前。
$_FILES['img']['type']
ファイルの MIME タイプ (ブラウザーがこの情報を提供する場合)。例は「画像/gif」です。ただし、この MIME タイプは PHP 側ではチェックされないため、鵜呑みにしないでください。 $_FILES['img']['size']: アップロードされたファイルのサイズ (バイト単位)。
$_FILES['img']['size']
アップロードされたファイルのサイズ (バイト単位)。
$_FILES['img']['tmp_name']
ファイルのアップロード後にサーバーに保存される一時ファイル名。
$_FILES['img']['error']
ファイルのアップロードに関連するエラー コード。

2. エラーコードについて

$_FILES['img']['error'] には以下の種類があります。
UPLOAD_ERR_OK
値は 0、エラーは発生しません、ファイル正常にアップロードされました。
UPLOAD_ERR_INI_SIZE
値は 1 で、アップロードされたファイルは php.ini の Upload_max_filesize オプションの制限を超えています。
UPLOAD_ERR_FORM_SIZE
値は 2 で、アップロードされたファイルのサイズが HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。
UPLOAD_ERR_PARTIAL
値は 3 で、ファイルの一部のみがアップロードされます。
UPLOAD_ERR_NO_FILE
値は 4 で、ファイルはアップロードされませんでした。
UPLOAD_ERR_NO_TMP_DIR
値は 6 で、一時フォルダーが見つかりません。 PHP 4.3.10 および PHP 5.0.3 が導入されました。
UPLOAD_ERR_CANT_WRITE
値は 7 で、ファイルの書き込みに失敗しました。 PHP5.1.0が導入されました。

3.move_uploaded_file
ファイルがアップロードされると、デフォルトでサーバーのデフォルトの一時ディレクトリに保存されます(php.iniのupload_tmp_dirが別のパスに設定されていない限り)。ファイル名ははランダムです。ファイルが移動または名前変更されていない場合、そのファイルはフォーム要求の最後に削除されます。したがって、一時ファイルは move_uploaded_file を通じて移動する必要があります。

実験後、move_uploaded_file の機能をコピーすることもできます。なぜ move_uploaded_file を使用するのでしょうか?

move_uploaded_file は、コピーによって引き起こされるセキュリティ上の脆弱性を防ぐために、アップロードされたファイルに対していくつかのチェックを行うと言われています。しかし、コピーすると具体的にどのような問題が生じるのでしょうか?
とにかく、PHP が特定の関数を与えたのですから、それは意味があるはずです。それで、まずはこのように使ってみましょう。

3. PHP ファイルのアップロードのセキュリティ チェック

$_FILES['img']['size'] と $_FILES['img']['type'] を使用して、アップロードされたファイルのセキュリティ チェックを行うことを検討できます。制限としては、アップロードの種類、アップロードファイルのサイズなどです。



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