php 生成文件出错,PHP文件上传 $_FILES['file']['error']

/****************************

上传类 By:donnier

****************************/

class upload_class{

private $ptname; //上传表单名称;

private $udname; //是否以月份建立子目录(0为否,其他为真);

private $ufname; //是否以时间建立文件名(0为否,其他为真);

private $ultype; //上传文件类型;

private $ulsize; //上传文件大小;

private $ulname; //输出文件名称;

private $ulpath; //输出文件路径;

private $wm;     //水印附加(0为不加,其他为加);

private $wmtype; //水印类型(0为文字,其他为图片);

private $wmpic;     //水印图片;

private $wmpicquality; //图片质量;

private $wmpictrans; //图片透明;

private $wmstr;     //水印字符;

private $wmstrsize; //字符大小;

private $wmstrfont; //字符字体;

private $wmstrcolor; //字符颜色;

private $wmpos;     //水印位置(1为顶端居左,2为顶端居中,3为顶端居右……);

function

__construct($ptname='upfile',$udname=1,$ufname=1,$ultype=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'),$wm=1,$wmtype=1,$wmpic='images/wm.gif',$ulsize=2097152,$ulpath='images/temp/',$wmpictrans=20,$wmpicquality=80,$wmstr='DONLINE',$wmstrsize=5,$wmstrfont='./font/cour.ttf',$wmstrcolor='#ff0000',$wmpos=9){

$this->ptname=$_FILES[$ptname];

$this->udname=$udname;

$this->ufname=$ufname;

$this->ultype=$ultype;

$this->ulsize=$ulsize;

$this->ulpath=$ulpath;

$this->wm=$wm;

$this->wmtype=$wmtype;

$this->wmpic=$wmpic;

$this->wmpicquality=$wmpicquality;

$this->wmpictrans=$wmpictrans;

$this->wmstr=$wmstr;

$this->wmstrsize=$wmstrsize;

$this->wmstrfont=$wmstrfont;

$this->wmstrcolor=$wmstrcolor;

$this->wmpos=$wmpos;

}

function uploadfun(){

if($_SERVER['REQUEST_METHOD']=='POST'){

if(!is_uploaded_file($this->ptname['tmp_name']))$this->errorfun('上传失败!');

if(!in_array($this->ptname['type'],$this->ultype))$this->errorfun('不支持的文件类型!');

if($this->ulsizeptname['size'])$this->errorfun('文件太大!');

if($this->udname){date_default_timezone_set('UTC');$this->ulpath=$this->ulpath.'month_'.date('Ym').'/';}

else{$this->ulpath=$this->ulpath;}

$this->createfun($this->ulpath);

if($this->ufname){$t=pathinfo($this->ptname['name']);$this->ulname=$this->ulpath.time().'.'.$t['extension'];}

else{$this->ulname=$this->ulpath.$this->ptname['name'];}

if(file_exists($this->ulname))$this->errorfun('该文件已存在!');

if(!move_uploaded_file($this->ptname['tmp_name'],$this->ulname))$this->errorfun('移动文件错误!');

$this->wmfun();

$this->errorfun('上传成功!');

}

}

function createfun($d){

if(!file_exists($d)){$this->createfun(dirname($d));mkdir($d);}

}

function wmfun(){

if($this->wm){

if(file_exists($this->ulname)){

$groundimg=getimagesize($this->ulname);

$ow=$groundimg[0];

$oh=$groundimg[1];

switch($groundimg[2]){

case 1:$g=imagecreatefromgif($this->ulname);break;

case 2:$g=imagecreatefromjpeg($this->ulname);break;

case 3:$g=imagecreatefrompng($this->ulname);break;

case 4:$g=imagecreatefromwbmp($this->ulname);break;

default:$this->errorfun('不支持的背景图片类型!');

}

}

else{$this->errorfun('背景图片不存在!');}

if(file_exists($this->wmpic)){

$wmimg=getimagesize($this->wmpic);

$ww=$wmimg[0];

$wh=$wmimg[1];

switch($wmimg[2]){

case 1:$w=imagecreatefromgif($this->wmpic);break;

case 2:$w=imagecreatefromjpeg($this->wmpic);break;

case 3:$w=imagecreatefrompng($this->wmpic);break;

case 4:$w=imagecreatefromwbmp($this->wmpic);break;

default:$this->errorfun('不支持的水印图片类型!');

}

}

else{$this->errorfun('水印图片不存在!');}

switch($this->wmtype){

case

0:$tp=imagettfbbox(ceil($this->wmstrsize*2.5),0,$this->wmstrfont,$this->wmstr);$ww=$tp[2]-$tp[6];$wh=$tp[3]-$tp[7];unset($tp);break;

case 1:$ww=$ww;$wh=$wh;break;

default:$ww=$ww;$wh=$wh;break;

}

if($owerrorfun('背景图片太小!无法生成水印!');

switch($this->wmpos){

case 0:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh));break;//随机

case 1:$x=0;$y=0;break;//1为顶端居左

case 2:$x=($ow-$ww)/2;$y=0;break;//2为顶端居中

case 3:$x=$ow-$ww;$y=0;break;//3为顶端居右

case 4:$x=0;$y=($oh-$wh)/2;break;//4为中部居左

case 5:$x=($ow-$ww)/2;$y=($oh-$wh)/2;break;//5为中部居中

case 6:$x=$ow-$ww;$y=($oh-$wh)/2;break;//6为中部居右

case 7:$x=0;$y=$oh-$wh;break;//7为底端居左

case 8:$x=($ow-$ww)/2;$y=$oh-$wh;break;//8为底端居中

case 9:$x=$ow-$ww;$y=$oh-$wh;break;//9为底端居右

default:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh));break;//随机

}

imagealphablending($g, true);

switch($this->wmtype){

case 0:

if($this->wmstrcolor){$R=hexdec(substr($this->wmstrcolor,1,2));$G=hexdec(substr($this->wmstrcolor,3,2));$B=hexdec(substr($this->wmstrcolor,5));}

else{$this->errorfun('水印文字颜色不存在!');}

imagestring($g,$this->wmstrfont,$x,$y,$this->wmstr,imagecolorallocate($g,$R,$G,$B));break;

case 1;imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this->wmpictrans);break;

default:imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this->wmpictrans);break;

}

@unlink($this->ulname);

switch($groundimg[2]){

case 1:imagegif($g,$this->ulname);break;

case 2:imagejpeg($g,$this->ulname,$this->wmpicquality);break;

case 3:imagepng($g,$this->ulname);break;

case 4:imagewbmp($g,$this->ulname);break;

default:$this->errorfun('生成图片失败!');

}

if(isset($wmimg))unset($wmimg);

if(isset($w))imagedestroy($w);

unset($groundimg);

imagedestroy($g);

}

}

function errorfun($e='未知错误!'){

$msg='

$msg.='alert("'.$e.'");';

$msg.='history.back();';

$msg.='';

echo $msg;

exit;

}

}

?>

php文件

require_once('inc/upload_class.php');

$ul=new upload_class();

$ul->uploadfun();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
$_FILES是一个PHP超全局变量,用于在上传文件时获取上传的文件信息。$_FILES数组的用法是通过HTML表单中的<input type="file">将文件上传到web服务器,然后通过PHP脚本使用$_FILES数组来处理上传的文件。 关于多文件上传,可以通过在HTML表单中添加多个<input type="file">元素来实现。在PHP脚本中,$_FILES数组会自动处理多个上传文件。在处理多个上传文件时,$_FILES数组中的每个文件都有自己的键名。例如,如果有两个上传文件,其键名分别为file1和file2,则可以使用以下代码访问它们: ``` $file1 = $_FILES["file1"]; $file2 = $_FILES["file2"]; ``` 值得注意的是,$_FILES数组中的每个上传文件都有自己的属性。常见的属性包括:name、type、size、tmp_name和error。其中,name属性表示文件的原始名称,type属性表示文件的MIME类型,size属性表示文件的大小(以字节为单位),tmp_name属性表示文件在web服务器上的临时存储位置,error属性表示上传过程中是否出错。 在PHP脚本中,可以使用move_uploaded_file()函数将上传的文件从临时位置移动到指定的位置。例如,以下代码将上传的文件从临时位置移动到web服务器上的/uploads目录中: ``` $target_dir = "/uploads/"; $target_file = $target_dir . basename($_FILES["file"]["name"]); if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) { echo "文件上传成功"; } else { echo "文件上传失败"; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值