English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

phpファイルアップロードのカテゴリ別サンプルコード

余談は省略し、直接コードを貼ります。以下に詳細なコードを示します:

<?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(メールを送信する際、#を@に置き換えてください。告発を行い、関連する証拠を提供してください。一旦確認がとりつけば、このサイトは即座に侵害される内容を削除します。)

基礎教程
おすすめ