English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
余談は省略し、直接コードを貼ります。以下に詳細なコードを示します:
<?php /** * ファイルアップロードクラス * @author lijiamin * @time 2017-02-17 * @email [email protected] */ class Upload{ private $allowExt = array('gif','jpg','jpeg','bmp','png','swf');//ファイルアップロードの拡張子を制限 private $maxSize = 1;//最大ファイルアップロード制限1M /** * ファイルの情報を取得 * @param str $flag 上传文件的标识 * @return arr 上传文件的信息数组 */ public function getInfo($flag){ return $_FILES[$flag]; } /** * ファイルの接尾辞を取得 * @param str $filename ファイル名 * @return str ファイル拡張子 */ public function getExt($filename){ return pathinfo($filename,PATHINFO_EXTENSION); } /** * アップロードされたファイルが合法か確認 * @param str $filename ファイル名 * @return bool ファイル拡張子が合法かどうか */ private function checkExt($filename){ $ext = $this->getExt($filename); return in_array($ext,$this->allowExt); } /** * ファイルサイズが制限を超えているか確認 * @param int size ファイルサイズ * @return bool ファイルサイズが制限を超えているかどうか */ public function checkSize($size){ return $size < $this->maxSize * 1024 * 1024; } /** * ランダムなファイル名 * @param int $len 随机文件名的长度 * @return str 随机字符串 */ public function randName($len=6){ return substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,$len); } /** * ファイルアップロード先のパスを作成 * @return str ファイルアップロードのパス */ public function createDir(){ //アップロードファイルのパス $dir = '.'/upload/'.date('Y/m/d',time()); //フォルダーが存在するか確認し、存在しない場合は新規作成 if(is_dir($dir) || mkdir($dir,0777,true)){ return $dir; } } /** * 檔案上傳 * @param str $flag 檔案上傳標識 * @return array 返上傳檔案名、保存路徑 */ public function uploadFile($flag){ if($_FILES[$flag]['name'] === '' || $_FILES[$flag]['error'] !== 0){ echo "ファイルがアップロードされていません"; return; } $info = $this->getInfo($flag); if(!$this->checkExt($info['name'])){ echo "サポートしていないファイル形式"; return; } if(!$this->checkSize($info['size'])){ echo "ファイルサイズが制限を超えています"; return; } $filename = $this->randName().'.'.$this->getExt($info['name']); $dir = $this->createDir(); if(!move_uploaded_file($info['tmp_name'], $dir.'/'.$filename')){ echo "ファイルアップロード失敗"; } return array('filename'=>$filename,'dir'=>$dir); } } } ?>
声明:この記事の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーによって自発的に提供された内容であり、このサイトは所有権を持ちません。人工的な編集は行われていません。著作権侵害の疑いがある場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。告発を行い、関連する証拠を提供してください。一旦確認がとりつけば、このサイトは即座に侵害される内容を削除します。)