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 であり、ファイルのアップロードには使用できません。
MAX_FILE_SIZE隠しフィールド
MAX_FILE_SIZE 隠しフィールド (単位はバイト) はファイル入力フィールドの前に配置する必要があり、その値は受信したファイルの最大サイズです。これはブラウザに対する推奨事項であり、PHP もこれをチェックします。 この設定はブラウザ側で簡単にバイパスできるため、この機能を使用して大きなファイルをブロックすることは期待しないでください。
リーリー
リーリー
$_FILESの適用
php.ini でのファイルのアップロードに関連するいくつかの一般的な設定: HTTP 経由のファイルアップロードを許可するかどうかを切り替えます。デフォルトはON、つまりオープンです
ファイルは、一時ファイルが保存されているサーバーにアップロードされます。指定しない場合は、システムのデフォルトの一時フォルダーが使用されます。
upload_max_filesize;
post_max_size;
リーリー
file_exists is_uploaded_file ファイルが HTTP POST 経由でアップロードされたかどうかを確認します move_uploaded_file アップロードしたファイルを新しい場所に移動します is_writable 指定されたファイル名が書き込み可能かどうかを判断します iconv 文字コード変換 str_replace 文字列置換(ファイル名変更、名前重複防止) getimagesize 画像ファイルかどうかを確認する(サフィックス名が変更されていても他の種類のファイルは検出可能)
別途実装するのは、ログインログと操作ログの実装、2つの機能の数のカスタマイズ、ユーザーのログイン時、追加、変更、削除時にこれら2つの機能を実行することです。情報はデータベース テーブルに記録されます。 そんなに面倒なことは必要ありません、jquery にはファイルのアップロードの進行状況を実装できるプラグインがたくさんありますので、それを使用できます
multipart/form-data が使用され、送信方法が
Post である場合にのみ、ファイル データをアップロードできます。完全に移転しました。
(ただし、利便性を考えると、この項目はフォームに追加した方が良いでしょう。ユーザーが大きなファイルをアップロードするのに時間をかけて待っていたのに、ファイルが大きすぎてアップロードに失敗したというトラブルを回避できます。)
ps: あなたはそのような性格なので、実装の原則を教えます、そしてあなたは具体的な詳細は自分で調べてください。
通常のページアクセスはすべて同期、つまりリクエスト→フィードバックであり、プログレスバーにはリアルタイムデータが必要なので、通常のページではこの機能を実現できません。非同期の ajax を使用する必要があります。このデータのソースはもちろん、サーバーから送信されるため、PHP はファイル転送プロセスのステータスを取得できません。幸いなことに、PHP の創設者は APC 拡張機能 (もう一つの拡張子は、uploadprogress)、拡張構文を使用し、さらに ajax を使用して、js を使用してページの DOM オブジェクトを操作すると、プログレスバーが実現されます。
原理は理解できましたが、作成するのは難しいです。