php 上传文件
发布网友
发布时间:2022-04-06 04:23
我来回答
共1个回答
热心网友
时间:2022-04-06 05:53
刚学php时写的一个类,可以给你参考下,你所说的功能基本上也都有。
这个用作学习还是不错的。
<?php
class fileup{
private $savefilepath; //保存路径
private $filetype=array('gif','jpg','jpeg','png'); //文件类型
private $maxsize=1000000; //上传最大的尺寸 默认值设置为1M
private $savename=true; //是否默认随机名称
private $upfileform; //上传文件表单的name值
//以下是不可以修改的成员属性
private $tmpname; //上传的临时文件名
private $upfilename; //上传文件的名称
private $uperror;
private $newname; //新的文件名
//private $upfiletype; //上传文件的类型
private $upfilesize; //上传文件的大小。
private $filehz; //文件名的扩展名。
//构造方法
function __construct($upfileform,$savefilepath='./upload/'){
$this->upfileform=$upfileform;
$this->savefilepath=rtrim($savefilepath,'/');
$this->tmpname=$_FILES[$upfileform]['tmp_name'];
$this->upfilename=$_FILES[$upfileform]['name'];
$this->upfilesize=$_FILES[$upfileform]['size'];
$this->uperror=$_FILES[$upfileform]['error'];
$this->getnewname();
}
//设置文件上传的参数,不设置为默认值。
function setfilepar($par){
$pars=array('filetype','maxsize','savename');
foreach($par as $key=>$value){
if(in_array($key,$pars)){
$this->$key=$value;
}else{
continue;
}
}
}
//检查上传
private function checkfileup(){
//判断文件夹是否正确或文件夹是否有可写入的权限。
if(!is_dir($this->savefilepath)||!is_writable($this->savefilepath)){
$this->uperror=8;
return false;
}
//判断文件名是否存在
if(is_file($this->newname)){
$this->uperror=9;
return false;
}
//判断上传文件的类型是否正确。
if(!in_array(strtolower($this->filehz),$this->filetype)){
$this->uperror=-1;
return false;
}
return true;
}
//获取新的文件名字
private function getnewname(){
$tmp=explode('.',$this->upfilename);
$this->filehz=$tmp[count($tmp)-1];
if(is_bool($this->savename)){
if($this->savename){
$this->newname=$this->savefilepath.'/'.date('YmdHis').rand(10000,99999).'.'.$this->filehz;
}else{
$this->newname=$this->savefilepath.'/'.$this->upfilename;
}
}else{
$this->newname=$this->savefilepath.'/'.$this->savename.'.'.$this->filehz;
}
}
//获取错误信息
private function getuperror(){
switch($this->uperror){
case 1: echo '上传文件超过了系统指定的大小'; break;
case 2: echo '上传文件超过了表单中指定的大小'; break;
case 3: echo '文件只有部分上传'; break;
case 4: echo '没有文件上传'; break;
case 6: echo '找不到上传的文件,系统错误'; break;
case 7: echo '文件写入失败'; break;
case 8: echo '文件路径不存在,或不可写'; break;
case 9: echo '文件名已经存在,请不要重复上传'; break;
case -1: echo '不是指定上传的文件'; break;
case -2: echo '请勿使用非法途径上传'; break;
case -3: echo '文件上传失败'; break;
default: '未知错误'; break;
}
}
function fileupload(){
if(!$this->checkfileup()||$this->uperror!=0){
$this->getuperror();
return false;
}else{
if(!is_uploaded_file($_FILES[$this->upfileform]['tmp_name'])){
$this->uperror=-2;
$this->getuperror();
return false;
}else{
if(move_uploaded_file($_FILES[$this->upfileform]['tmp_name'],$this->newname)){
return true;
}else{
$this->uperror=-3;
return false;
}
}
}
}
//获取文件名
function getname(){
return $this->newname;
}
}