ホームページ  >  記事  >  バックエンド開発  >  PHP アップロードの原則と操作の実装、PHP アップロードの原則_PHP チュートリアル

PHP アップロードの原則と操作の実装、PHP アップロードの原則_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:21:42953ブラウズ

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

PHPアップロードファイルの関数ライブラリに関しては、インターネット上に完成したパッケージが多数存在しており、誰もがそれらを直接使用することができます。

この記事はアップロードの原理についてのみ説明しており、簡単なアップロード操作については無視します^_^~

また、サーバーが画像タイプのファイルを受信する機能を制限し、クライアントが悪意を持ってウイルス ファイルのサフィックスを画像に一致するファイルのアップロードに変更するなど、いくつかのセキュリティ判断もあります。

(たとえば、単一ファイルのアップロード、複数ファイルの原則は同じですが、さらにいくつかのトリックがあります)

PHP アップロードの原則と操作の実装、PHP アップロードの原則_PHP チュートリアルDOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <> <メタhttp-equiv="Content-Type" content="text/html;charset=UTF-8"> <タイトル>ファイルをアップロードタイトル> > ボディ> <フォームaction="upload.php" enctype="multipart/form-data"メソッド="post"> <入力type="hidden" name="MAX_FILE_SIZE" value="10000" /> ファイルをアップロード: <input type="file" name="file"/> <入力タイプ="送信"="アップロード" /> フォーム> ボディ> 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

リーリー

次のことがわかります:

リーリー

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です

以下は単一ファイルをアップロードするための完全なコードです。私が考えたように書いたので、ロジックが少し乱雑かもしれません。原理を理解することが最も重要です。

リーリー

5. PHP でファイルをアップロードするための一般的な関数: (具体的な使用法は投稿しません。API ドキュメントを読んでください ^_^)

file_exists

ファイルまたはディレクトリが存在するかどうかを確認します

is_uploaded_file ファイルが HTTP POST 経由でアップロードされたかどうかを確認します

move_uploaded_file アップロードしたファイルを新しい場所に移動します

is_writable 指定されたファイル名が書き込み可能かどうかを判断します

iconv 文字コード変換

str_replace 文字列置換(ファイル名変更、名前重複防止)

getimagesize 画像ファイルかどうかを確認する(サフィックス名が変更されていても他の種類のファイルは検出可能)

PHPはログ管理(ユーザー操作の記録)の原則を実装しています

別途実装するのは、ログインログと操作ログの実装、2つの機能の数のカスタマイズ、ユーザーのログイン時、追加、変更、削除時にこれら2つの機能を実行することです。情報はデータベース テーブルに記録されます。

PHPファイルをアップロードするときにプログレスバー機能を実装するにはどうすればよいですか?

そんなに面倒なことは必要ありません、jquery にはファイルのアップロードの進行状況を実装できるプラグインがたくさんありますので、それを使用できます

ps: あなたはそのような性格なので、実装の原則を教えます、そしてあなたは具体的な詳細は自分で調べてください。

通常のページアクセスはすべて同期、つまりリクエスト→フィードバックであり、プログレスバーにはリアルタイムデータが必要なので、通常のページではこの機能を実現できません。非同期の ajax を使用する必要があります。このデータのソースはもちろん、サーバーから送信されるため、PHP はファイル転送プロセスのステータスを取得できません。幸いなことに、PHP の創設者は APC 拡張機能 (もう一つの拡張子は、uploadprogress)、拡張構文を使用し、さらに ajax を使用して、js を使用してページの DOM オブジェクトを操作すると、プログレスバーが実現されます。
原理は理解できましたが、作成するのは難しいです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/853719.html技術記事 PHP アップロードの原理と動作実装、PHP アップロードの原理 ファイルをアップロードするための PHP 関数ライブラリについては、インターネット上に完成したパッケージが多数存在しており、誰でも直接使用することができます。 この記事では...

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