>  기사  >  백엔드 개발  >  이미지 업로드 웹사이트 PHP 이미지 업로드 클래스 코드

이미지 업로드 웹사이트 PHP 이미지 업로드 클래스 코드

WBOY
WBOY원래의
2016-07-29 08:40:21816검색

간단한 것부터 시작해 보겠습니다.

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


class upLoad{
public $length; //파일 크기 제한
public $file; //이 클래스를 이미지 업로드에 사용할지, 파일 업로드에 사용할지 결정
public $fileName; //파일 이름
public $fileTemp; //임시 파일 업로드
public $fileSize; //파일 크기 업로드
public $error; 파일이 없습니다.
public $ fileType; //파일 형식 업로드
public $directory; //
public $maxLen;
function __construct($ length,$file=true,$directory)
{
$this->maxLen=$length
$this->length=$length*1024
$this-> file=$file; //true는 일반 파일, false 이미지 판단의 경우
$this->directory=$directory
}
public function upLoadFile($fileField)
{
$this->fileName=$fileField['name '];
$this->fileTemp=$fileField['tmp_name']
$this->error=$fileField['error' ];
$this->fileType=$ fileField['type'];
$this->fileSize=$fileField['size']
$pathSign = DIRECTORY_SEPARATOR; 🎜>if($this->file) // 일반 파일 업로드
{
$path = $this->_isCreatedDir($this->directory);//경로 가져오기
if ($path)//http://www.jb51.net
{
$createFileType = $this->_getFileType($this->fileName) //파일 카테고리 설정
$ createFileName=uniqid(rand()); //파일 이름을 무작위로 생성
$thisDir=$this->directory.$pathSign.$createFileName.".".$createFileType
if(@move_uploaded_file($) this->fileTemp,$thisDir)) //임시 파일 이동 지정된 경로로 이동
{
return $thisDir
}
}
}else{ //이미지 업로드
$path = $this->_isCreatedDir($this ->directory);//경로 가져오기
if($path)//경로가 존재합니다//http://www.jb51.net
{
$createFileType = $this->_getFileType( $this->fileName);//파일 카테고리 설정
$createFileName=uniqid(rand())
return @move_uploaded_file ($this->fileTemp,$this->directory.$pathSign.$createFileName.".".$createFileType) ? true : false
}
}
}
공개 함수 _isBig($length,$fsize) //파일이 지정된 크기를 초과하는지 여부를 반환합니다
{
return $fsize>$length ? true :
}
public function _getFileType($fileName) //파일의 접미사 가져오기
{
return end(explode(". ",$fileName))
}
public function _isImg($fileType) //업로드된 이미지 유형 여부 허용됩니다
{
$type=array("jpeg","gif","jpg ","bmp")
$fileType=strtolower($fileType)
$fileArray=explode ("/",$fileType);
$file_type=end($fileArray)
return in_array($file_type,$type);//http://www.jb51.net
}
public function _isCreatedDir($path) //경로가 존재하는지, 존재하지 않으면 생성
{
if(!file_exists($path))
{
return @mkdir( $path,0755)?true:false; //권한 755//
}
else
{
return true
}
}
공개 함수 showError() //오류 메시지 표시
{//http://www.jb51.net
echo " n";
exit();
}
}
class multiUpLoad는 upLoad를 확장합니다{
public $FILES;
함수 __construct( $arrayFiles,$length,$file=true,$directory)
{
$this->FILES= $arrayFiles;
parent::__construct($length,$file,$directory)
}
함수 upLoadMultiFile()
{
$arr=array()
if ($this->_judge()||$this->_judge()==" no") //모든 파일이 사양을 충족합니다. 업로드를 시작하세요
{
foreach($this->FILES as $key=>$value)
{
$strDir=parent:: upLoadFile($this->FILES[$key]);
array_push($arr, $strDir)
}
//http://www.jb51.net
return $arr ;
}else
{
return false
}
}
function _judge()
{
if($this->file)
{
foreach($this->FILES as $key=>$value)
{
if($this->_isBig($this->length,$value['size' ]))
{
$this->errormsg="파일이 $this->maxLen K를 초과합니다."
parent::showError()
}
if($value ['error']=UPLOAD_ERR_NO_FILE)
{
//$this->errormsg="파일 업로드 오류가 나타납니다."
//parent::showError()
return "no" ;
}
}
return true
}else
{
/ /http://www.jb51.net
foreach($this->FILES $key=>$value)
{
if($this->_isBig($this-> ;length,$value['size']))
{
$this- >errormsg="사진이 $this->maxLen을 초과합니다.";
parent::showError()
}
if($value['error']!=0)
{
$this->errormsg="이미지를 업로드하는 동안 오류가 발생했습니다.";
parent::showError()
}
if(!$this->_isImg($value[' type']))
{
$this->errormsg="이미지 형식이 잘못되었습니다."
parent:: showError();
}
return true;
}
}
}
?>
썸네일을 자동으로 생성할 수 있는 좀 더 복잡한 PHP 업로드 클래스를 살펴보겠습니다.
첫 번째 단계 시작:
폴더 만들기, 레이아웃:
부록: 첨부 파일(업로드된 파일은 이 디렉터리에 저장됩니다. 원본 이미지) )
|— smallimg: 썸네일 이미지 저장
|— mark: 워터마크 이미지 저장
include: 클래스 파일 및 글꼴 저장(이 프로그램 코드 사용: 04B_08__.TTF)
| — upfile.php: 간단한 업로드 통합, 썸네일 및 워터마크의 클래스 파일 정보 생성
|— 04B_08__.TTF: 글꼴 파일
test.php: 테스트 파일
두 번째 단계는 클래스
upfile .php

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


class UPImages {
var $annexFolder = "annex";//첨부 파일 저장 지점, 기본값은 다음과 같습니다: annex
var $smallFolder = "smallimg";/ / 썸네일 저장 경로, 참고: $annexFolder 아래의 하위 디렉터리에 있어야 하며 기본값은: smallimg
var $markFolder = "mark";//Watermark 이미지 저장 위치
var $upFileType = "jpg gif png ";//업로드 유형, 기본값: jpg gif png rar zip
var $upFileMax = 1024;//업로드 크기 제한, 단위는 "KB", 기본값: 1024KB
var $fontType; // 글꼴
var $maxWidth = 500; //최대 이미지 너비
var $maxHeight = 600; //최대 이미지 높이
function UPImages($annexFolder,$smallFolder,$includeFolder) {
$this ->annexFolder = $annexFolder;
$this->smallFolder = $smallFolder;
$this->fontType = $includeFolder."/04B_08__.TTF"; function upLoad ($inputName) {
$imageName = time();//현재 시간을 이미지 이름으로 설정
if(@empty($_FILES[$inputName]["name"])) die( error("업로드된 이미지 정보가 없습니다. 확인해 주세요."))
$name =explore(".",$_FILES[$inputName]["name"]);//업로드하기 전에 "로 파일을 분리하세요. ."를 입력하여 파일을 얻으려면
$imgCount = count($name);//차단 횟수 가져오기
$imgType = $name[$imgCount-1];//파일 형식 가져오기
if(strpos($this- >upFileType,$imgType) === false) die(error("업로드된 파일 형식은 ".$this->upFileType만 지원합니다."는 ".$imgType을 지원하지 않습니다.)) ;
$photo = $imageName.".".$imgType;//데이터베이스에 기록된 파일 이름
$uploadFile = $this->annexFolder."/".$photo;//업로드된 파일 파일 이름
$upFileok = move_uploaded_file( $_FILES[$inputName]["tmp_name"],$uploadFile)
if($upFileok) {
$imgSize = $_FILES[$inputName]["size "];
$kSize = round ($imgSize/1024);
if($kSize > ($this->upFileMax*1024)) {
@unlink($uploadFile);
die(error("업로드된 파일이 초과했습니다." .$this->upFileMax."KB"))
}
} else {
die(error("이미지를 업로드하지 못했습니다. 업로드한 파일이 $upFileMax KB 또는 업로드 시간 제한 시간을 초과하지 않는지 확인하세요."));
}
return $photo;
}
function getInfo($photo) {
$photo = $this->annexFolder."/".$photo;
$imageInfo = getimagesize($photo)
$imgInfo["width"] = $imageInfo[0]; height"] = $imageInfo[1];
$ imgInfo["type"] = $imageInfo[2];
$imgInfo["name"] = basename($photo);
return $imgInfo ;
}
function smallImg($photo, $width=128,$height=128) {
$imgInfo = $this->getInfo($photo)
$photo = $this ->annexFolder."/".$photo;// 사진 소스 가져오기
$newName = substr($imgInfo["name"],0,strrpos($imgInfo["name"], ".") )."_thumb.jpg";//새 사진 이름
if($imgInfo["type"] == 1) {
$img = imagecreatefromgif($photo)
} elseif($imgInfo ["type"] == 2) {
$img = imagecreatefromjpeg($photo);
} elseif($imgInfo["type"] == 3) {
$img = imagecreatefrompng($photo );
} else {
$img = " "
}
if(empty($img)) return False
$width = ($width > $imgInfo[" width"]) ? $imgInfo["width"] : $width ;
$height = ($height > $imgInfo["height"]) ? $imgInfo["height"] : $height;
$srcW = $imgInfo["너비"];
$ srcH = $imgInfo["높이"]
if ($srcW * $width > $srcH * $height) {
$height = round($srcH * $width / $srcW);
} else {
$width = round($srcW * $height / $srcH)
}
if (function_exists("imagecreatetruecolor") )) {
$newImg = imagecreatetruecolor($width, $ height);
ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"] , $imgInfo["height"])
} else {
$newImg = imagecreate($width, $height)
ImageCopyReised($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $ imgInfo["height"])
}
if ($this->toFile) {
if (file_exists($this- >annexFolder."/".$this->smallFolder."/".$newName)) @unlink($this->annexFolder."/".$this->smallFolder."/".$newName );
ImageJPEG($newImg,$this-> annexFolder."/".$this->smallFolder."/".$newName)
return $this->annexFolder."/" .$this->smallFolder."/".$newName
} else {
ImageJPEG($newImg)
}
ImageDestroy($newImg); );
return $newName;
}
function waterMark($photo,$text) {
$imgInfo = $this->getInfo($photo); this->annexFolder."/".$photo;
$newName = substr($imgInfo["name"], 0, strrpos($imgInfo["name"], ".")) "_mark. jpg";
switch ($imgInfo["type"] ) {
사례 1:
$img = imagecreatefromgif($photo);
break;
사례 2:
$ img = imagecreatefromjpeg($photo);
break;
사례 3:
$img = imagecreatefrompng($photo);
기본값:
return False; }
if (empty($img)) return False;
$width = ($this->maxWidth > $imgInfo["width"]) ? $imgInfo["너비"] : $this->maxWidth;
$height = ($this->maxHeight > $imgInfo["height"]) ? $imgInfo["높이"] : $this->최대 높이;
$srcW = $imgInfo["너비"];
$srcH = $imgInfo["높이"];
if ($srcW * $width > $srcH * $height) {
$height = round($srcH * $width / $srcW);
} else {
$width = round($srcW * $height / $srcH);
}
if (function_exists("imagecreatetruecolor")) {
$newImg = imagecreatetruecolor($width, $height);
ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
} else {
$newImg = imagecreate($width, $height);
ImageCopyReised($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
}
$white = imageColorAllocate($newImg, 255, 255, 255);
$black = imageColorAllocate($newImg, 0, 0, 0);
$alpha = imageColorAllocateAlpha($newImg, 230, 230, 230, 40);
ImageFilledRectangle($newImg, 0, $height-26, $width, $height, $alpha);
ImageFilledRectangle($newImg, 13, $height-20, 15, $height-7, $black);
ImageTTFText($newImg, 4.9, 0, 20, $height-14, $black, $this->fontType, $text[0]);
ImageTTFText($newImg, 4.9, 0, 20, $height-6, $black, $this->fontType, $text[1]);
if($this->toFile) {
if (file_exists($this->annexFolder."/".$this->markFolder."/".$newName)) @unlink($ this->annexFolder."/".$this->markFolder."/".$newName);
ImageJPEG($newImg,$this->annexFolder."/".$this->markFolder."/".$newName);
return $this->annexFolder."/".$this->markFolder."/".$newName;
} else {
ImageJPEG($newImg);
}
ImageDestroy($newImg);
이미지파괴($img);
$newName을 반환합니다.
}
}
?>


第三步:测试上传类
test.php

复主代码 代码如下:


$annexFolder = "별관";
$smallFolder = "smallimg";
$markFolder = "마크";
$includeFolder = "포함";
require("./".$includeFolder."/upfile.php");
$img = 새로운 UPImages($annexFolder,$smallFolder,$includeFolder);
$text = array("www.jb51.net","모든 권리 보유");
if(@$_GET["go"]) {
$photo = $img->upLoad("upfile");
$img->maxWidth = $img->maxHeight = 350;//设置生成水印图image值
$img->toFile = true;
$newSmallImg = $img->smallImg($photo);
$newMark = $img->waterMark($photo,$text);
echo "

";
echo "

";
echo "继续上传";
} else {
?>







}
?>

以上就介绍了图 Images 上传网站 php 图 Pictures 上传类代码 , 包括了图 Pictures 上传网站 方 内容 , 希望对PHP教程有 兴趣的 朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.