目次
PHPアップロード原理と動作実装
ホームページ バックエンド開発 PHPチュートリアル PHPアップロードの原理と動作実装_PHPチュートリアル

PHPアップロードの原理と動作実装_PHPチュートリアル

Jul 13, 2016 am 10:21 AM
原理

PHPアップロード原理と動作実装

PHP でファイルをアップロードするための関数ライブラリに関しては、誰もが直接使用できる、よくパッケージ化されたライブラリがインターネット上に多数あります。
この記事はアップロードの原理についてのみ説明しており、簡単なアップロード操作については無視します^_^~
また、サーバーが画像タイプのファイルを受信する機能を制限し、クライアントがウイルス ファイルのサフィックスをアップロードする画像タイプと一致するファイルに悪意を持って変更するなど、セキュリティに関する判断もいくつかあります。
(たとえば、単一ファイルのアップロード、複数ファイルの原則は同じですが、さらにいくつかのトリックがあります)
index.html
コードをコピー
ファイルをアップロード
ファイルをアップロードします:
コードをコピー
1.フォームタグのenctype属性
フォーム内の
enctype="multipart/form-data" は、フォームの MIME エンコードを設定するために使用されます。
デフォルトでは、このエンコード形式は application/x-www-form-urlencoded であり、ファイルのアップロードには使用できません。
multipart/form-dataを使用し、投稿方法がPostの場合のみ、ファイルデータを完全に転送できます。
2. MAX_FILE_SIZE 隠しフィールド
MAX_FILE_SIZE 隠しフィールド (単位: バイト) はファイル入力フィールドの前に配置する必要があり、その値は受信ファイルの最大サイズです。これはブラウザに対する推奨事項であり、PHP もこれをチェックします。
この設定はブラウザ側で簡単にバイパスできるため、この機能を使用して大きなファイルをブロックすることは期待しないでください。 (ただし、利便性を考慮すると、この項目はフォームに追加した方が良いでしょう。ユーザーが大きなファイルをアップロードするのに時間をかけて待っていたのに、ファイルが大きすぎてアップロードに失敗したというトラブルを回避できます。)
upload.php
print_r($_FILES);
?>
次のことがわかります:
コードをコピー
配列
(
[ファイル] => 配列
(
[名前] = & gt; 写真ファイル .jpg
[種類] = & gt; 画像/jpeg
=> [エラー] = & gt; 【サイズ】=>73886
)
)
コードをコピー
3. グローバル変数$_FILESの適用
$_FILES['file']['name'] はアップロードしたファイルの元のファイル名です
$_FILES['file']['type'] はアップロードされたファイルのMIMEタイプです
$_FILES['file']['size'] アップロードされたファイルのサイズ(バイト単位)
$_FILES['file']['tmp_name'] ファイルアップロード後にサーバー上に保存される一時ファイル名()です
$_FILES['file']['error'] ファイルアップロードのエラーコード
4. デフォルトでは、アップロードされたファイルはサーバー上の一時フォルダーに保存され、そのディレクトリは php.ini に設定されます。
php.ini でのファイルのアップロードに関連するいくつかの一般的な設定:
file_uploads ; HTTP 経由でのファイルのアップロードを許可するかどうかを切り替えます。デフォルトはON、つまりオープンです
upload_tmp_dir; サーバー上の一時ファイルが保存されている場所にファイルをアップロードします。 指定しない場合は、システムのデフォルトの一時フォルダーが使用されます。
upload_max_filesize; アップロードできるファイルの最大サイズです。デフォルトは 2M です
post_max_size; は、フォーム内のすべての値を含む、PHP へのフォーム POST を通じて受信できる最大値を指します。デフォルトは8Mです
以下は単一ファイルをアップロードするための完全なコードです。私が考えたように書いたので、ロジックが少し乱雑かもしれません。原理を理解することが最も重要です。
コードをコピー
//アップロードされたファイル情報を取得します
$fileName=$_FILES['ファイル']['名前'];
$fileType=$_FILES['ファイル']['タイプ'];
$fileError=$_FILES['ファイル']['エラー'];
$fileSize=$_FILES['ファイル']['サイズ'];
$tempName=$_FILES['file']['tmp_name'];//一時ファイル名
//アップロードファイルの種類を定義します
$typeList = array("image/jpeg","image/jpg","image/png","image/gif") //許可されるタイプを定義します
if(!is_uploaded_file($tempName)){
//POSTでアップロードされたファイルかどうかを判定します
exit("HTTP POST 経由でアップロードされませんでした");
}その他{
if(!in_array($fileType, $typeList)){
exit("アップロードされたファイルは指定された種類ではありません");
}その他{
if(!getimagesize($tempName)){
//ウイルスファイルの拡張子を画像形式に変更するなど、ユーザーによる悪意のあるファイルのアップロードを防止します
exit("アップロードされたファイルは写真ではありません");
}
}
if($fileError>0){
错 // アップロードファイルエラー番号判定
switch ($fileError) {
ケース 1:
A $ message = "アップロードされたファイルは、php.ini の Upload_max_filesize オプションで制限されている値を超えています。";
休憩;
ケース 2:
$message="アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。";
休憩;
ケース 3:
$message="ファイルの一部のみがアップロードされました。";
休憩;
ケース 4:
$message="ファイルはアップロードされていません。";
休憩;
ケース 6:
$message="一時フォルダーが見つかりません。";
休憩;
ケース 7:
$message="ファイルの書き込みに失敗しました";
休憩;
ケース 8:
$message="PHP 拡張機能によりファイルのアップロードが中断されました";
休憩;
}
exit("ファイルのアップロードに失敗しました: ".$fileError);
}その他{
if($fileSize>100000){
’ to ’ s
‐ ‐ ‐ ‐ ‐ ‐ //特定のフォームのアップロードされるファイルのサイズを制限します
exit("アップロードされたファイルはサイズ制限を超えています");
}その他{
//アップロードされたファイルの中国語名の文字化けを避ける
$fileName=iconv("UTF-8", "GBK", $fileName);//iconv によってキャプチャされた文字エンコーディングを utf-8 から gbk に変換して出力します
_ move_uploaded_file($tempName, "uploads/".$fileName)){
传 エコー「ファイルのアップロードは成功しました!」
}その他{
「ファイルのアップロードに失敗しました」 echo 「ファイルのアップロードに失敗しました」;
}
}
}
}
?>
コードをコピー
5. PHP でファイルをアップロードするための一般的な関数: (具体的な使用法は投稿しません。API ドキュメントを読んでください ^_^)
file_exists ファイルまたはディレクトリが存在するかどうかを確認します
is_uploaded_file ファイルが HTTP POST 経由でアップロードされたかどうかを決定します
move_uploaded_file アップロードしたファイルを新しい場所に移動します
is_writable 指定されたファイル名が書き込み可能かどうかを判断します
iconv 文字コード変換
getimagesize 画像ファイルかどうかを確認する(他の種類のファイルはサフィックス名を変更しても検出可能)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/854420.html技術記事 PHP アップロードの原理と動作実装 PHP アップロード ファイルの関数クラス ライブラリについては、インターネット上に多数の完成したパッケージがあり、誰でもそれらを直接使用できます。 この記事では、アップロードの原理と簡単さについて説明します...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

nohupの機能と原理の解析 nohupの機能と原理の解析 Mar 25, 2024 pm 03:24 PM

nohup の役割と原理の分析 Unix および Unix 系オペレーティング システムでは、nohup はバックグラウンドでコマンドを実行するためによく使用されるコマンドです。ユーザーが現在のセッションを終了したり、ターミナル ウィンドウを閉じたりしても、コマンドはまだ実行され続けています。この記事では、nohup コマンドの機能と原理を詳しく分析します。 1. nohup の役割: バックグラウンドでのコマンドの実行: nohup コマンドを使用すると、ターミナル セッションを終了するユーザーの影響を受けることなく、長時間実行されるコマンドをバックグラウンドで実行し続けることができます。これは実行する必要があります

Struts フレームワークの原則と実践についての深い議論 Struts フレームワークの原則と実践についての深い議論 Feb 18, 2024 pm 06:10 PM

Struts フレームワークの原理分析と実践的な調査 JavaWeb 開発で一般的に使用される MVC フレームワークとして、Struts フレームワークは優れた設計パターンとスケーラビリティを備えており、エンタープライズ レベルのアプリケーション開発で広く使用されています。この記事では、Struts フレームワークの原理を分析し、読者がフレームワークをよりよく理解して適用できるように、実際のコード例を使用してそれを検討します。 1. Struts フレームワークの原理の分析 1. MVC アーキテクチャ Struts フレームワークは MVC (Model-View-Con) に基づいています。

MySQL MVCC の原理と実装の詳細な分析 MySQL MVCC の原理と実装の詳細な分析 Sep 09, 2023 pm 08:07 PM

MySQLMVCC の原理と実装の詳細な分析。MySQL は、現在最も人気のあるリレーショナル データベース管理システムの 1 つです。効率的な同時処理をサポートするためのマルチバージョン同時実行制御 (MultiversionConcurrencyControl、MVCC) メカニズムを提供します。 MVCC は、データベース内の同時トランザクションを処理する方法であり、高い同時実行性と分離性を提供します。この記事では、MySQLMVCC の原理と実装を詳細に分析し、コード例を示して説明します。 1.M

MyBatis のバッチ挿入実装原理の深い理解 MyBatis のバッチ挿入実装原理の深い理解 Feb 21, 2024 pm 04:42 PM

MyBatis は、さまざまな Java プロジェクトで広く使用されている人気のある Java 永続層フレームワークです。その中でも、バッチ挿入は、データベース操作のパフォーマンスを効果的に向上させることができる一般的な操作です。この記事では、MyBatis でのバッチ挿入の実装原理を深く調査し、特定のコード例を使用して詳細に分析します。 MyBatis でのバッチ挿入 MyBatis では、通常、バッチ挿入操作は動的 SQL を使用して実装されます。複数の挿入値を含む S を構築することによって

Linuxのchageコマンドの機能と動作原理の詳細な分析 Linuxのchageコマンドの機能と動作原理の詳細な分析 Feb 24, 2024 pm 03:48 PM

Linuxシステムのchageコマンドは、ユーザーアカウントのパスワード有効期限を変更するコマンドであり、アカウントの最長使用日と最短使用可能日を変更することもできます。このコマンドはユーザー アカウントのセキュリティ管理において非常に重要な役割を果たし、ユーザー パスワードの使用期間を効果的に制御し、システムのセキュリティを強化します。 CHAGE コマンドの使用方法: CHAGE コマンドの基本構文は次のとおりです: chage [オプション] ユーザー名 たとえば、ユーザー「testuser」のパスワードの有効期限を変更するには、次のコマンドを使用できます。

MyBatis ページングプラグインの原理の詳細な説明 MyBatis ページングプラグインの原理の詳細な説明 Feb 22, 2024 pm 03:42 PM

MyBatis は優れた永続層フレームワークであり、XML とアノテーションに基づいたデータベース操作をサポートし、シンプルで使いやすく、豊富なプラグイン メカニズムも提供します。その中でも、ページング プラグインは、よく使用されるプラグインの 1 つです。この記事では、MyBatis ページング プラグインの原理を詳しく説明し、具体的なコード例で説明します。 1. ページング プラグインの原理 MyBatis 自体はネイティブ ページング機能を提供しませんが、プラグインを使用してページング クエリを実装できます。ページング プラグインの原理は主に MyBatis を傍受することです

Struts2 フレームワークの動作原理と実装の詳細な分析 Struts2 フレームワークの動作原理と実装の詳細な分析 Jan 05, 2024 pm 04:08 PM

Struts2 フレームワークの原理と実装方法の解釈 はじめに: Struts2 は、人気のある MVC (Model-View-Controller) フレームワークとして、JavaWeb 開発で広く使用されています。これは、Web レイヤーをビジネス ロジック レイヤーから分離する方法を提供し、柔軟性と拡張性に優れています。この記事では、Struts2 フレームワークの基本原理と実装方法を紹介し、読者がフレームワークをよりよく理解できるようにいくつかの具体的なコード例を示します。 1. フレームワーク原則: St

Golang で継承メソッドを実装するための基本原則と方法 Golang で継承メソッドを実装するための基本原則と方法 Jan 20, 2024 am 09:11 AM

Golang の継承メソッドの基本原理と実装方法 Golang では、継承はオブジェクト指向プログラミングの重要な機能の 1 つです。継承を通じて、親クラスのプロパティとメソッドを使用して、コードの再利用と拡張性を実現できます。この記事では、Golang の継承メソッドの基本原理と実装方法を紹介し、具体的なコード例を示します。継承メソッドの基本原則 Golang では、継承は構造体を埋め込むことによって実装されます。構造が別の構造に埋め込まれている場合、埋め込まれた構造は埋め込まれています。

See all articles