ホームページ  >  記事  >  バックエンド開発  >  PHPでのファイルのアップロードに関するいくつかの問題

PHPでのファイルのアップロードに関するいくつかの問題

怪我咯
怪我咯オリジナル
2017-07-04 13:44:381106ブラウズ

この記事は、PHP での アップロードファイル処理の問題の解釈に関する関連情報を主に紹介しています。非常に優れており、必要な友人は参考にすることができます。

ブラウザーで自分の情報を編集するときに、アップロードに遭遇します。アバター; ライブラリでは、ドキュメントをアップロードします...「アップロード」という言葉があちこちにあります。

phpは最高の言語です(他の言語のプログラマの方、私を叩かないでください…)。 PHP にはインタラクションの処理において当然の利点があり、アップロードされたファイルを処理するための強力な機能も当然備わっています。

一般的なデータの送信と同様に、ファイルのアップロードにもフォームが必要です。ファイルをアップロードするための特別なフォームを作成しましょう。

<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>

それでは、このコードスニペットを分析してみましょう。

上記のenctypeは、データをサーバーに送信する際に使用するエンコード形式を指定します。値は 3 つあります:

MAX_FILE_SIZE 隠しフィールド (単位はバイト) はファイル入力フィールドの前に配置する必要があり、その値はファイルの最大サイズです。これはブラウザに対する提案であり、PHP もこれをチェックします。このバリアはブラウザ側でバイパスできるため、大きなファイルをブロックするためにこれを使用することは期待しないでください。ただし、最大ファイルサイズは php.ini の post_max_size= (number)M によって制限されます。しかし、この項目を追加すると、ユーザーが大きなファイルをアップロードするのに時間を費やした後に大きな ファイルのアップロード が失敗したことに気づくというトラブルを避けることができます。 ユーザーがファイルフォームを送信すると、サーバーはデータを受け入れることができます。 PHP には

ファイルを処理するためのグローバル変数

$_FILES があり、アップロードフィールド名は userfile であると想定されます (フィールド内で任意に変更可能)。 $_FILES['userfile']['name'] クライアントファイルの元の名前。 $_FILES['userfile']['type'] ファイルの MIME タイプは PHP 側でチェックされていないため、この値はまだ存在しない可能性があります。

$_FILES['userfile']['size'] アップロードされたファイルのサイズ(バイト単位)。

$_FILES['userfile']['tmp_name'] ファイルのアップロード後にサーバー側に保存される一時ファイル名。
$_FILES['userfile']['error'] ファイルアップロードに関するエラーコード。アップロードが成功した場合、値は 0 です。ファイルがアップロードされると、ファイルはデフォルトでサーバーのデフォルトの一時ディレクトリに保存され、php.ini の Upload_tmp_dir は別のパスに設定されます。

ここで move_uploaded_file() 関数について話さなければなりません:

この関数は、file で指定されたファイルが正当にアップロードされたファイル (つまり、PHP の HTTP POST アップロード メカニズムを通じてアップロードされたファイル) であることをチェックし、保証します。ファイルが正当な場合、そのファイルは newloc で指定されたファイルに移動されます。

ファイルが合法的にアップロードされたファイルではない場合、操作は行われず、move_uploaded_file() は false を返します。

file が正当にアップロードされたファイルであるにもかかわらず、何らかの理由で移動できない場合、アクションは発生せず、move_uploaded_file() は false を返し、警告が発行されます。

この種のチェックは、アップロードされたファイルによってそのコンテンツがこのシステムのユーザーまたは他のユーザーに表示される可能性がある場合に特に重要です。

以下はphpでファイルをアップロードする例です:

<b>上传文件处理</b>
<?php
if (isset($_FILES[&#39;userfile&#39;])) {
$uploaddir = &#39;upload/&#39;;
$uploadfile = $uploaddir . basename($_FILES[&#39;userfile&#39;][&#39;name&#39;]);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
if (move_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;], $uploadfile)) {
echo &#39;上传文件成功&#39;.&#39;<br>&#39;;
} else {
echo &#39;上传文件失败&#39;.&#39;<br>&#39;;
}
echo &#39;这是上传文件的一些信息:&#39; . &#39;<br>&#39;;
print_r($_FILES);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
die();
}
?>
<b>上传表单</b>
<!--表单中的enctype属,必须和以下定义保持一致-->
<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<hr/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>

以上がPHPでのファイルのアップロードに関するいくつかの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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