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 "파일 업로드 실패"; }else{ return array('filename'=>$filename,'dir'=>$dir); } } } ?>
성명: 본 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 내용입니다. 본 웹사이트는 소유권을 가지지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있는 내용을 발견하시면 notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 (이메일 작성 시 #을 @으로 변경하십시오) 신고하시고 관련 증거를 제공하시면, 해당 내용이 사실이 확인되면 즉시 해당 내용을 삭제하겠습니다.