ホームページ  >  記事  >  バックエンド開発  >  PHP アップロードの原則と実装

PHP アップロードの原則と実装

巴扎黑
巴扎黑オリジナル
2016-11-11 14:08:381018ブラウズ

アップロードの原則と簡単なアップロード操作について:


/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);?>Array(
[file] => Array
[tmp_name] => F:wamptmpphp41BB。 '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 が使用されます。アップロードが許可されるファイルのサイズ。デフォルトは 2Mpost_max_size です。 //フォーム内のすべての値を含む、PHP へのフォーム POST を通じて受信できる最大値を指します。デフォルトは 8M です



簡単なコード:



//アップロードされたファイル情報を取得します
$fileName=$_FILES['file']['name']; $fileType=$_FILES['file']['type']; ']['error']; $fileSize=$_FILES['file']['size']; $tempName=$_FILES['file']['tmp_name'];//一時ファイル名

//定義アップロードするファイルの種類
$typeList = array("image/jpeg","image/jpg","image/png","image/gif"); //許可されるファイルの種類を定義します

if($fileError>0){ //アップロードファイルエラー番号判定
使用する 使用する 使用する 使用する アウト アウト アウト アウト アウト アウト アウト アウト アウト オフ ‐ ‐ ‐ ‐ ‐ およびbreak; ケース 2: $message="ファイルのサイズが超えています。 HTML フォームの MAX_FILE_SIZE オプションで指定された値 ブレーク; ケース 4: $message="ファイルがアップロードされません。"; ケース 7: $message sage; ="ファイルの書き込みに失敗しました";
Break; ファイルがアップロードされました
exit("No Upload via HTTP POST");
}else{ if(!in_array($fileType, $typeList)){ exit ("アップロードされたファイルは指定されたタイプではありません");
}else{ if(!getimagesize($tempName) ) {// ウイルス ファイルの拡張子を画像形式に変更するなど、ユーザーがマルウェアをアップロードしないようにします
Exit ("アップロードされたファイルは写真ではありません"); アップロード ファイルにはサイズ制限があります
EXIT ("アップロード ファイルが制限サイズを超えています");
} else {// アップロード ファイルの中国語名の文字化けを回避します
$ filename = iconv (" UTF-8", "GBK", $ FILENAME); // iconv でキャッチした文字を UTF-8 から GBK 出力に変換します
$ filename = str_replace (".", Time (). ", $ Filename);画像名の後にタイムスタンプを追加し、再設定されたファイルカバレッジを回避します文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文避ける。 ";}} Else {echo" アップロード ファイルが失敗します ";
}
}}?>




5、PHP アップロード ファイルのいくつかの一般的な関数:

file_exists() //ファイルまたはディレクトリが存在するかどうかを確認します is_uploaded_file() //ファイルが HTTP POST でアップロードされたかどうかを判断します move_uploaded_file() //アップロードされたファイルを新しい場所に移動します is_writable() //指定されたファイル名を判断します書き込み可能かどうか iconv() //文字エンコード変換 str_replace() //文字列置換(重複しないようにファイル名を変更) getimagesize() //画像ファイルかどうかチェック(他の種類のサフィックス名であっても)ファイルが変更されている) を検出できます)


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