以下で詳しく説明します例: ユーザーは展示物をアップロードし、その展示物のサムネイルをアップロードできます。その場合、サムネイル ファイルの制限タイプは jpg、gif、png などになりますが、展示ファイルは制限タイプは、mov、avi、mpeg などで、画像サイズは 100KB に制限され、オーディオとビデオのサイズは 2MB に制限されます。クラス コードは次のとおりです。
<ol class="dp-xml"> <li class="alt"><span><span>class Upload </span></span></li> <li class=""><span>{ </span></li> <li class="alt"><span> public $InputName; // 文件上传域控件名 </span></li> <li class=""><span> </span></li> <li class="alt"><span> /** </span></li> <li class=""><span> * 允许上传的文件类型 </span></li> <li class="alt"><span> * 形式为 array('image/jpeg', 'image/png', 'image/gif') 或包含此类数组的数组(与每个上传域控件对应) </span></li> <li class=""><span> */ </span></li> <li class="alt"><span> public $FileType; </span></li> <li class=""><span> </span></li> <li class="alt"><span> /** </span></li> <li class=""><span> * 最大上传文件大小(单位:byte) </span></li> <li class="alt"> <span> * 形式为 array('image' =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $size, 'audio' =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $size)(表示每种应用文件类型所对应的上传大小) 或包含此类数组的数组(与每个上传域控件对应)或一数值(表示所有上传文件均限制在此大小之下) </span> </li> <li class=""><span> */ </span></li> <li class="alt"><span> public $FileMaxSize; </span></li> <li class=""><span> </span></li> <li class="alt"><span> public $FileSavePath; // 文件保存路径(可为数组形式,表示不同上传域上传文件到不同的路径) </span></li> <li class=""><span> public $FileSaveName; // 文件保存名(不包含后缀名)(可为数组形式,表示不同上传域上传文件保存的不同名称) </span></li> <li class="alt"><span> public $NoteFileFalse; // 文件错误提示 </span></li> <li class=""><span> public $NoteFileType; // 文件类型不符提示 </span></li> <li class="alt"><span> public $NoteFileSize; // 文件大小超出提示 </span></li> <li class=""><span> </span></li> <li class="alt"><span> /* 上传文件并返回文件名信息(包含后缀名) */ </span></li> <li class=""><span> public function UploadFile() </span></li> <li class="alt"><span> { </span></li> <li class=""> <span> $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>CheckFile(); // 检验文件 </span> </li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file</font></span><span> = $_FILES[$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>InputName]; </span> </li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_save_full_name</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array</font></span><span>(); // 文件保存名(包含后缀名) </span> </li> <li class="alt"><span> </span></li> <li class=""> <span> foreach ($file['name'] as $</span><span class="attribute"><font color="#ff0000">key</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $name) </span> </li> <li class="alt"><span> { </span></li> <li class=""><span> if (!empty($name)) // 文件不为空 </span></li> <li class="alt"><span> { </span></li> <li class=""><span> /* 确定文件保存路径 */ </span></li> <li class="alt"> <span> if (is_array($this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSavePath)) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_save_path</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSavePath[$key]; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> else </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_save_path</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSavePath; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 确定文件保存名(不包含后缀名) */ </span></li> <li class="alt"> <span> if (is_array($this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSaveName)) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_save_name</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSaveName[$key]; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> else </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_save_name</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileSaveName; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 开始保存 */ </span></li> <li class="alt"> <span> $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>CreatePath($file_save_path); // 如果路径不存在则创建路径 </span> </li> <li class=""> <span> move_uploaded_file($file["tmp_name"][$key], $file_save_path . $file_save_name . $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>GetSuffix($file['name'][$key])); </span> </li> <li class="alt"> <span> $file_save_full_name[] = $file_save_name . $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>GetSuffix($file['name'][$key]); </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> else </span></li> <li class=""><span> { </span></li> <li class="alt"><span> $file_save_full_name[] = null; </span></li> <li class=""><span> } </span></li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> unlink($file); </span></li> <li class=""><span> </span></li> <li class="alt"><span> /* 如果只有一个文件,则返回单个文件名 */ </span></li> <li class=""><span> if (count($file_save_full_name) == 1) </span></li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_save_full_name</font></span><span> = $file_save_full_name[0]; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> return $file_save_full_name; </span></li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 检验文件 */ </span></li> <li class="alt"><span> private function CheckFile() </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file</font></span><span> = $_FILES[$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>InputName]; </span> </li> <li class=""><span> </span></li> <li class="alt"> <span> foreach ($file['name'] as $</span><span class="attribute"><font color="#ff0000">key</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $name) </span> </li> <li class=""><span> { </span></li> <li class="alt"><span> if (!empty($name)) // 文件不为空 </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">type</font></span><span> = $file['type'][$key]; </span> </li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">size</font></span><span> = $file['size'][$key]; </span> </li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">error</font></span><span> = $file['error'][$key]; </span> </li> <li class=""><span> </span></li> <li class="alt"><span> /* 确定允许上传文件类型列表 */ </span></li> <li class=""> <span> if (is_array($this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileType[0])) </span> </li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_type</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileType[$key]; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span> else </span></li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_type</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileType; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> /* 确定最大上传文件大小 */ </span></li> <li class=""> <span> if (is_array($this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileMaxSize)) </span> </li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_max_size_key</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">explode</font></span><span>('/', $type); </span> </li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_max_size_key</font></span><span> = $file_max_size_key[0]; </span> </li> <li class=""> <span> if (is_array($this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileMaxSize[0])) </span> </li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_max_size</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileMaxSize[$key][$file_max_size_key]; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span> else </span></li> <li class="alt"><span> { </span></li> <li class=""> <span> $</span><span class="attribute"><font color="#ff0000">file_max_size</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileMaxSize[$file_max_size_key]; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span> } </span></li> <li class="alt"><span> else </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> $</span><span class="attribute"><font color="#ff0000">file_max_size</font></span><span> = $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>FileMaxSize; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 文件错误 */ </span></li> <li class="alt"> <span> if ($error </span><span class="tag"><strong><font color="#006699">></font></strong></span><span> 0) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span> die($name . $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>NoteFileFalse); </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 文件大小超过最大上传文件大小 */ </span></li> <li class="alt"> <span> if ((!is_null($file_max_size) && $size </span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $file_max_size) || ($</span><span class="attribute"><font color="#ff0000">size</font></span><span> == 0)) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span> die($name . $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>NoteFileSize); </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> </span></li> <li class=""><span> /* 文件类型不符 */ </span></li> <li class="alt"><span> if (!in_array($type, $file_type)) </span></li> <li class=""><span> { </span></li> <li class="alt"> <span> die($name . $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>NoteFileType); </span> </li> <li class=""><span> } </span></li> <li class="alt"><span> } </span></li> <li class=""><span> } </span></li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> /* 获取文件后缀名 */ </span></li> <li class=""><span> private function GetSuffix($fileName) </span></li> <li class="alt"><span> { </span></li> <li class=""><span> return substr($fileName, strrpos($fileName, ".")); </span></li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> /* 如果路径不存在则创建路径 */ </span></li> <li class=""><span> private function CreatePath($filePath) </span></li> <li class="alt"><span> { </span></li> <li class=""><span> if (!file_exists($filePath)) </span></li> <li class="alt"><span> { </span></li> <li class=""><span> mkdir($filePath); </span></li> <li class="alt"><span> } </span></li> <li class=""><span> } </span></li> <li class="alt"><span>} </span></li> </ol>
PHP の一般的なファイル アップロード クラスの使用方法: 次に、この記事の冒頭の例を使用して呼び出しを説明します。このクラスのメソッド (笑、呼び出しは非常に便利です):
$upload_obj = new Upload(); // ファイルアップロードオブジェクト
$upload_obj->InputName = 'upload_test' // ファイルアップロードドメインコントロール名
$upload_obj-; >FileType = array(array ('image/jpeg', 'image/png'), array('audio/mpeg', 'video/x-msvideo')); // アップロードできるファイルの種類
$upload_obj ->FileMaxSize = array('画像' => 100 * 1024, '音声' => 2 * 1024 * 1024, 'ビデオ' => 2 * 1024 * 1024);
$upload_obj->FileSavePath = array('upload/files/s /', 'upload/files/z/');
$upload_obj->FileSaveName = time();
$upload_obj->NoteFileFalse = 'ファイル エラー';
$upload_obj- >NoteFileType = 'ファイルの種類が一致しません ';
$upload_obj->NoteFileSize = 'ファイル サイズを超えました';
$file_save_full_name = $upload_obj->UploadFile(); // ファイルのフルネームをアップロードして取得します。 (ベース名と拡張子) (複数のファイルがある場合は配列の形式になります) (データベースに情報を保存するためにフルネームが使用されます)
概要: 実際、これにより複数のファイルのアップロードを簡単に実現できます。 PHP 一般ファイル アップロード クラスは、最終的に PHP グループ ファイル アップロードを使用します。注意すべき点は、複数のファイルをアップロードする場合に、コントロール名の最後に [] を付けることを忘れないことです。呼び出し層でループしたり、アップロードを 1 つずつ処理したりする必要がないため、アプリケーションが簡単になります。