ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるアップロードファイル処理の問題例を詳しく解説

PHPにおけるアップロードファイル処理の問題例を詳しく解説

墨辰丷
墨辰丷オリジナル
2018-06-02 09:44:391315ブラウズ

この記事は主に、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で圧縮画像を作成する方法

php

単一ファイルと複数ファイルのアップロード処理の共有例

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

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