> 백엔드 개발 > PHP 튜토리얼 > ASP 파일 업로드 PHP 파일 업로드 클래스 코드

ASP 파일 업로드 PHP 파일 업로드 클래스 코드

WBOY
풀어 주다: 2016-07-29 08:46:26
원래의
804명이 탐색했습니다.

코드 복사 코드는 다음과 같습니다.


/**
* 파일 업로드 수업
*/
class uploadFile {
public $max_size = '1000000';//업로드 파일 크기 설정
public $ file_name = 'date';//이름 바꾸기 방법은 시간을 기준으로 이름을 지정하는 것을 의미하며 다른 사람들은 주어진 이름을 사용합니다
public $allow_types;//업로드가 허용되는 파일 확장자, 다른 파일 형식은 "|"로 구분됩니다.
public $errmsg = '';//오류 메시지
public $uploaded = '';//업로드된 파일 이름(파일 경로 포함)
public $save_path;//업로드된 파일 저장 경로
private $ files;//업로드 대기 중인 제출된 파일
private $file_type = array();//파일 유형
private $ext = '';//업로드된 파일 확장자
/**
* 생성자, 초기화 클래스
* @access public
* @param string $file_name 업로드된 파일 이름
* @param string $save_path 업로드된 대상 폴더
* /
공용 함수 __construct($save_path = './upload/',$file_name = 'date',$allow_types = '') {
$this->file_name = $file_name;//이름 바꾸기 방법 시간에 따른 이름 지정을 나타내며, 다른 사람들은
$this->save_path = (preg_match('//$/',$save_path)) ? $save_path : $save_path
$ this를 사용합니다. ->allow_types = $allow_types == '' ? 'jpg|gif|png|zip|rar' : $allow_types
}
/**
* 파일 업로드
* @access public
* @param $files 업로드 대기 중인 파일(양식의 $_FILES[])
* @return boolean 부울 값 반환
*/
공개 함수 upload_file( $ 파일) {
$name = $files['name']
$type = $files['type']
$size = $files['size']
$ tmp_name = $files['tmp_name'];
$error = $files['error']
스위치($error) {
case 0 : $this->errmsg = ''; >break;
case 1 : $this->errmsg = 'php.ini의 파일 크기를 초과했습니다';
break
case 2 : $this->errmsg = '파일 크기를 초과했습니다. 옵션으로 지정한 크기';
break
case 3 : $this->errmsg = '파일의 일부만 업로드되었습니다.'
break
case 4: $this-> ;errmsg = '업로드된 파일이 없습니다.';
break;
case 5 : $this->errmsg = '업로드된 파일 크기가 0입니다.'
break
기본값: $this- >errmsg = '파일 업로드에 실패했습니다! ';
break;
}
if($error == 0 && is_uploaded_file($tmp_name)) {
//파일 유형 감지
if($this->check_file_type($ name) == FALSE){
return FALSE;
}
//파일 크기 감지
if($size > $this->max_size){
$this-> errmsg = '업로드된 파일 '.$name.'이 너무 큽니다. 최대 지원 파일은 '.ceil($this->max_size /1024).' kb file';
return
}
$this->set_save_path();//파일 저장 경로 설정
$new_name this->file_name != 'date' ? $this->file_name.'.'.$this->ext : date('YmdHis').'.'.$this->ext;//Set 새 파일 이름
$this->uploaded = $this->save_path.$new_name;//업로드된 파일 이름
//파일 이동
if(move_uploaded_file($tmp_name,$this-> ;uploaded)) {
$this->errmsg = '파일'.$this->업로드되었습니다.'성공적으로 업로드되었습니다! ';
return TRUE;
}else{
$this->errmsg = '파일'.$this->업로드에 실패했습니다.';
FALSE 반환
}
}
/**
* 업로드된 파일 형식 확인
* @access public
* @param string $filename 확인 대기 중인 파일 이름
* @return 확인에 성공하면 TRUE, FALSE이면 오류 메시지 실패해요
*/
공용 함수 check_file_type($filename){
$ext = $this ->get_file_type($filename);
$this->ext = $ext;
$allow_types =explore('|',$this->allow_types);//다음과 같은 파일 확장자를 분할합니다. 명명된 배열
//echo $ext
//업로드된 파일 확장자가 업로드 가능한 파일 확장자인지 확인
if(in_array($ext,$allow_types)){
return TRUE;
}else{
$this->errmsg = '파일 업로드'.$filename.'유형 오류, 업로드만 지원합니다'.str_replace('|',',',$this->allow_types).' 및 기타 파일 형식!'
return FALSE; }
/**
* 파일 형식 가져오기
* @access public
* @param string $filename 파일 형식을 가져올 대상 파일 이름
* @return string 파일 형식
*/
공용 함수 get_file_type($filename){
$info = pathinfo($filename)
$ext = $info['extension']
return $ext;
}
/**
* 파일 업로드 후 저장 경로를 설정하세요
*/
공용 함수 set_save_path(){
$this->save_path = (preg_match('//$/', $this ->save_path)) ? $this->save_path : '/'
if(!is_dir($this->save_path)){
//If 디렉토리가 존재하지 않으면
$this->set_dir()
}
}
/**
* 디렉토리 생성
* @access public
* @param string $dir 디렉토리 생성 경로
* @return boolean 오류 메시지를 반환하고 실패 시 FALSE
*/
공용 함수 set_dir($dir = null){
//경로가 존재하는지 확인
if(!$dir){
$dir = $this->save_path
}
if(is_dir($dir) ){
$ this->errmsg = '생성하려는 폴더가 이미 존재합니다! ';
}
$dir =explore('/', $dir);
foreach($dir as $v){
if($v){
$d .= $v .'/';
if(!is_dir($d)){
$state = mkdir($d, 0777)
if(!$state)
$this-> ;errmsg = '$d 디렉토리 생성 중 오류 발생'!';
}
}
}
true를 반환합니다.
}
}
/*************************************************
* 이미지 처리 클래스
*
* 이미지에 썸네일, 워터마크 및 기타 작업을 생성할 수 있습니다
* 이 클래스의 기본 인코딩은 UTF8입니다. GBK에서 사용하려면 중국어 문자열을 추가하세요. img_mark 메소드에서 iconv 주석을 제거하세요
*
* UTF8 한자와 영문자의 크기(픽셀)를 판단하기가 쉽지 않기 때문에 한자와 영문자가 너무 많이 혼합된 경우 문자열 왼쪽
* 또는 오른쪽으로 편향될 수 있습니다. 프로젝트에 따라 달라집니다. 환경에서는 get_mark_xy 메소드의 $strc_w = strlen($this->mark_str)*7 5에 대한 GD 라이브러리 지원이 필요합니다
* 줄 조정
* 이 클래스를 보다 효과적으로 활용하려면 GD 라이브러리 2.0 사용을 권장합니다
*
* @author kickflip@php100 QQ263340607
************ ******************************* **************/
클래스 uploadImg는 uploadFile을 확장합니다.
public $mark_str = 'kickflip@php100'; //워터마크 문자열
public $str_r = 0; //문자열 색상 R
public $str_g = 0; //문자열 색상 G
public $ str_b = 0 ; //문자열 색상 B
public $mark_ttf = './upload/SIMSUN.TTC'; //워터마크 텍스트 글꼴 파일(경로 포함)
public $mark_logo = './upload/logo .png'; //이미지 워터마크
public $resize_h;//썸네일 높이 생성
public $resize_w;//썸네일 너비 생성
public $source_img;//소스 이미지 파일
public $dst_path = './ upload/';//썸네일 파일 저장 디렉터리, 비워두면 소스 이미지 저장 디렉터리
/**
* 썸네일 이미지 생성
* @access public
* @param 정수 $w 축소된 이미지의 너비(px)
* @param 정수 $h 축소된 이미지의 높이(px) px)
* @param string $source_img 소스 이미지(경로 파일명)
*/
public function img_reized($w,$h, $source_img = NULL){
$source_img = $source_img == NULL ? $this->uploaded : $source_img;//비어 있으면 마지막으로 업로드한 이미지가 기본값입니다
if(! is_file($source_img)) { //소스 이미지가 존재하는지 확인하세요
$this->errmsg = 'File'.$source_img.'does not presents'
return FALSE; >$this->source_img = $source_img;
$img_info = getimagesize($source_img);
$source = $this->img_create($source_img); //소스 이미지 만들기
$ this ->resize_w = $w;
$this->resize_h = $h;
$thumb = imagecreatetruecolor($w,$h)
imagecopyreized($thumb,$source,0, 0 ,0,0,$w,$h,$img_info[0],$img_info[1]);//썸네일 이미지 생성
$dst_path = $this->dst_path == $this -> ;save_path : $this->dst_path; //대상 폴더 경로 가져오기
$dst_path = (preg_match('//$/',$dst_path)) ? $dst_path : '/'; 대상 폴더 뒤에 / 추가
if(!is_dir($dst_path)) $this->set_dir($dst_path); //대상 폴더가 없으면 생성
$dst_name = $ this-> ;set_newname($source_img);
$this->img_output($thumb,$dst_name);//이미지 출력
imagedestroy($source)
imagedestroy($thumb)>}
/**
*Watermark
*@access public
*@param string $source_img 소스 이미지 경로 파일명
*@param 정수 $mark_type 워터마크 유형(1은 영문 문자열, 2는 중국어 문자열, 3은 문자열) 그림 로고, 기본값은 영문 문자열)
*@param 정수 $mark_postion 워터마크 위치 (1은 왼쪽 하단, 2는 오른쪽 하단, 3은 왼쪽 상단, 4는 오른쪽 상단) , 기본값은 오른쪽 하단입니다)
*@return 워터마크가 있는 사진
*/
공용 함수 img_mark($source_img = NULL,$mark_type = 1,$mark_postion = 2) {
$source_img = $source_img == NULL ? ;uploaded: $source_img;//소스 파일 주소를 가져옵니다. 비어 있으면 마지막으로 업로드한 이미지가 기본값입니다.
if(!is_file($source_img)) { //소스 이미지가 있는지 확인
$this->errmsg = '파일'.$source_img.'존재하지 않음';
FALSE 반환
}
$this->source_img =
$img_info = getimagesize($source_img);
$source = $this->img_create($source_img); //소스 이미지 생성
$mark_xy = $this->get_mark_xy($mark_postion);//Get 워터마크 위치
$mark_color = imagecolorallocate($source,$this->str_r,$this->str_g,$this->str_b)
switch($mark_type) {
case 1 : //영문 문자열 워터마크 추가
$str = $this->mark_str
imagestring($source,5,$mark_xy[0],$mark_xy[1],$str,$mark_color)
$ this->img_output($source,$source_img);
break;
사례 2: //중국어 문자열 워터마크 추가
if(!is_file($this->mark_ttf)) // 글꼴 파일이 있는지 확인
$this->errmsg = '워터마킹 실패: 글꼴 파일'.$this->mark_ttf.'
return FALSE;
$str = $this->mark_str;
//$str = iconv('gbk','utf-8',$str);//문자 인코딩 변환 GBK 인코딩을 사용하는 경우 제거하세요. 이 줄 주석
imagettftext($source,12,0,$mark_xy[2],$mark_xy[3],$mark_color,$this->mark_ttf,$str)
$this->img_output ($source,$ source_img);
break;
case 3: //이미지 워터마크 추가
if(is_file($this->mark_logo)){ //워터마크된 로고 이미지가 있는 경우 로고 이미지의 기본 정보를 가져오고, 존재하지 않으면 종료합니다.
$logo_info = getimagesize($this->mark_logo)
}else{
$this->errmsg = '워터마킹 실패: 로고 파일 '.$this->mark_logo가 존재하지 않습니다!' ';
거짓 반환
}
$logo_info = getimagesize($this->mark_logo)
if($logo_info[0]>$img_info[0] || $logo_info[ 1]>$img_info[1]) { //소스 이미지가 로고 크기보다 작은 경우
$this->errmsg = '워터마킹 실패: 소스 이미지'.$this->source_img를 종료합니다. '보다' .$this->mark_logo.'작다!';
거짓 반환
}
$logo = $this->img_create($this->mark_logo)
imagecopy( $source, $logo, $mark_xy[4], $mark_xy[5], 0, 0, $logo_info[0], $logo_info[1])
$this->img_output($source,$source_img)
break
기본값: //다른 것은 텍스트 이미지입니다.
$str = $this->mark_str
imagestring($source,5,$mark_xy[0],$mark_xy[1],$str,$mark_color); >$this->img_output($source,$source_img);
break
}
imagedestroy($source)
}
/**
* 워터마크 위치 가져오기
* @access private
* @param 정수 $mark_postion 워터마크 위치(1은 왼쪽 하단 모서리, 2는 오른쪽 하단 모서리, 3은 왼쪽 상단 모서리) , 4는 오른쪽 상단, 나머지는 오른쪽 하단)
* @return array $mark_xy 워터마크 위치의 좌표 (인덱스 0은 영문 문자열 워터마크 좌표 X, 인덱스 1은 영문 문자열 워터마크 좌표 Y,
* 인덱스 2는 중국어 문자열 워터마크 좌표 X, 인덱스 3은 중국어 문자열 워터마크 좌표 Y, 인덱스 4는 워터마크 이미지 좌표 X, 인덱스 5는 워터마크 이미지 좌표 Y)
*/
private function get_mark_xy($mark_postion){
$img_info = getimagesize($this->source_img);
$stre_w = strlen($this->mark_str)*9 5; 문자열의 (px) (크기 5의 영문자 크기는 약 9px, 미적용은 5px 정도)
//(크기 12의 한자 크기는 12px, utf8의 한자 길이는 utf8) 3바이트입니다. 1바이트는 4px이고, 영문자 하나의 길이는 약 9px입니다.
// 한자와 영문이 혼합되어 있을 때 완전히 표시하려면 바이트 수 * 7px로 설정하세요.
$strc_w = strlen( $this->mark_str)*7 5; //워터마크 중국어 문자열의 길이(px)
if(is_file($this->mark_logo)){ //있는 경우 워터마크 로고 사진, 로고 사진 가져오기 기본 정보
$logo_info = getimagesize($this->mark_logo)
}
//imagestring 함수에서 문자열의 시작 위치가 다르기 때문에 그리고 imagettftext 함수는 영어와 중국어 문자열의 Y 위치에도 차이가 있습니다
//imagestring 함수는 텍스트의 왼쪽 상단에서 참조됩니다. imagettftext 함수는 텍스트의 왼쪽 하단에서 참조됩니다.
switch($mark_postion){
case 1: //좌측 하단 위치
$mark_xy[0] = 5 //워터마크 영문 문자열 좌표 X
$mark_xy[1] = $img_info [1]-20; //워터마크 영문 문자열 좌표 Y
$mark_xy[2] = 5; //워터마크 중국어 문자열 좌표 $mark_xy[0] = $img_info[0]-$stre_w; 문자열 좌표 X
$mark_xy[1] = $img_info[1]-20; //워터마크 영어 문자열 좌표 Y
$mark_xy[2] = $img_info[0]-$strc_w; 좌표 X
$mark_xy[3] = $img_info[1]-5; //워터마크 중국어 문자열 좌표 Y
$mark_xy[4] = $img_info[0]-$logo_info[0]-5;/ /워터마크 이미지 좌표 X
$mark_xy[5] = $img_info[1]-$logo_info[1]-5 ;//워터마크 이미지 좌표 Y
break
case 3: //왼쪽 상단 위치; Corner
$mark_xy[0] = 5; //워터마크 영문 문자열 좌표 X
$mark_xy[1] = 5; //워터마크 영문 문자열 좌표 Y
$mark_xy[2] = 5; 워터마크 중국어 문자열 좌표 X
$mark_xy[3] = 15; //워터마크 중국어 문자열 좌표 Y
$mark_xy[4] = 5 //워터마크 이미지 좌표 🎜>$mark_xy[0] = $img_info[ 0]-$stre_w; //워터마크 영문 문자열 좌표 X
$mark_xy[1] = 5; //워터마크 영문 문자열 좌표 Y
$mark_xy[ 2] = $img_info[0]-$strc_w; /Watermark 중국어 문자열 좌표 X
$mark_xy[3] = 15; //Watermark 중국어 문자열 좌표 Y
$mark_xy[4] = $img_info [0]-$logo_info[0]-5;//Watermark 이미지 좌표 오른쪽 하단
$mark_xy[0] = $img_info[0]-$stre_w; //Watermark 영문 문자열 좌표 X
$mark_xy[1] = $img_info[1]-5;//Watermark 영문자 문자열 좌표 Y
$mark_xy[2] = $img_info[0]-$strc_w; //워터마크 중국어 문자열 좌표 X
$mark_xy[3] = $img_info[1]-15; 중국어 문자열 좌표 Y
$mark_xy[4] = $img_info[0]-$logo_info[0]-5;//워터마크 이미지 좌표 X
$mark_xy[5] = $img_info[1]-$logo_info [1]-5;//워터마크 이미지 좌표 Y
break
}
return $mark_xy>}
/**
* 소스 이미지 생성
* @access private
* @param string $source_img 소스 이미지(경로 파일명)
* @return img 대상 파일에서 이미지 생성
*/
비공개 함수 img_create( $source_img) {
$info = getimagesize($source_img);
스위치($info[2]){
사례 1:
if(!function_exists('imagecreatefromgif')){
$source = @imagecreatefromjpeg($source_img);
}else{
$source = @imagecreatefromgif($source_img);
}
break; = @imagecreatefromjpeg($source_img);
break;
사례 3:
$source = @imagecreatefrompng($source_img)
break; imagecreatefromwbmp($source_img);
break;
기본값:
$source = FALSE;
return $source;
/**
* 이미지 이름 바꾸기
* @access private
* @param string $source_img 소스 이미지 경로 파일 이름
* @return string $dst_name 이름이 바뀐 이미지 이름(경로 파일 이름)
*/
비공개 함수 set_newname($sourse_img) {
$info = pathinfo($sourse_img)
$new_name = $this->resize_w.'_' .$this->resize_h.'_'.$info['basename'];//파일 이름을 다음으로 변경: width_height_filename
if($this->dst_path == '') { //If 썸네일 저장 경로가 비어 있으면 기본적으로 소스 파일과 동일한 폴더입니다.
$dst_name = str_replace($info['basename'],$new_name,$sourse_img)
}else{
$dst_name = $this->dst_path.$new_name;
return $dst_name;
}
/**
* 출력 이미지
* @access private
* @param $im 처리된 이미지
* @param $dst_name 출력 이미지 이름(경로 파일 이름)
* @return 출력 이미지
*/
공용 함수 img_output($im,$ dst_name) {
$info = getimagesize($this->source_img);
스위치($info[2]){
사례 1:
if(!function_exists('imagegif')) {
imagejpeg($im,$dst_name);
}else{
imagegif($im, $dst_name)
}
break
imagejpeg($ im,$dst_name);
break;
사례 3:
imagepng($im,$dst_name)
break
imagewbmp($im, $dst_name) );
}
}
}
?>


php 파일 업로드 클래스 소스 코드 패키징
위 내용은 asp 파일 업로드 내용을 포함하여 asp 파일 업로드와 php 파일 업로드 코드를 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿