php面向对象实现文件上传类,文件上传类-用PHP面向对象思想实现对各个类进行封装处理-PHP中文网教程...

1,确定文件上传类的成员属性

首先得考虑上传文件需要哪些属性,我们可以随便写一个file文件的post方式的表单提交,然后打印看看$_FILES里有哪些参数

新建file_upload_html.html文件:

代码如下:html>

Title

用户头像上传

用户姓名:张三

    现有头像:

获取表单提交的参数,新建file_upload_object.php,代码如下<?php

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2018/3/3 0003

* Time: 上午 11:33

*/

require './file_upload_html.html';

//获取表单提交的参数

$file=isset($_FILES['photo'])?$_FILES['photo']:"";

echo "

";

print_r($file);

echo "

";

提交表单之后打印结果如下:

fe28c7416984c72eed31aae032a49324.png

由此可知道上传文件类需要知道上传的文件名称,文件类型,错误标志位,上传的大小

因此我们写一个上传文件类需要知道这些属性,新建一个上传文件类,FileUpload.Class.php

代码如下:<?php

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2018/3/3 0003

* Time: 上午 10:52

*/

class FileUpload{

public $type=array(

'image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'

);

public $maxSize=1048576;//1M=1024*1024

public $uploadSavePath="./uploads";

public  $errorMessage="";

}

2,文件上传类的方法

对文件上传类的属性根据自己业务的需求写一个方法进行管理,

比如上传大小的设置,上传保存路径的设置,方法名叫upload()

具体代码如下:<?php

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2018/3/3 0003

* Time: 上午 10:52

*/

class FileUpload{

private $type=array(

'image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'

);//文件类型

public $maxSize=1048576;//1M=1024*1024,上传的容量

public $uploadSavePath="./uploads"; //上传保存的路径

public $errorMessage=""; //错误信息

public function upload($file){

//上传类首先得判断上传存不存在错误,错误信息有123467六种情况,0为正常上传

if($file['error']>0){

$errorMsg="错误信息为:";

switch ($file['error']){

case 1:$errorMsg.="文件大小超过了php.ini中upload_max_filesize选项限制的值";

break;

case 2:$errorMsg.="文件大小超过了表单中max_file_size选项指定的值!";

break;

case 3:$errorMsg.="文件只有部分被上传!";

break;

case 4:$errorMsg.="没有文件被上传!";

break;

case 6:$errorMsg.="找不到临时文件夹!";

break;

case 7:$errorMsg.="临时文件写入失败";

break;

default:$errorMsg.='未知错误!';

break;

}

return false;

}

//判断上传的文件是否属于$type内

if(!in_array($file['type'],$this->type)){

//不在所属类型内时

$this->errorMessage="未定义的文件上传类型";

return false;

}

//判断文件上传的大小不能超过所定义的大小

if($file['size']>$this->maxSize){

$this->errorMessage="超出上传所限制的最大上传容量";

return false;

}

//给上传的图片重命名

$newFileName=uniqid("php_").strrchr($file['name'],".");

//设置上传文件的全目录 ./uploads/2018-03-03

$allPath1=$this->uploadSavePath."/".date("Y-m-d");

$allPath=$this->uploadSavePath."/".date("Y-m-d")."/".$newFileName;

//判断这个目录是否存在

if(!file_exists($allPath1)){

mkdir($allPath1,'0777',true);

}

//移动

if(!move_uploaded_file($file['tmp_name'],$allPath)){

$this->errorMessage="文件上传失败";

}else{

return $allPath;

};

}

}

3,文件上传处理

对类进行调用生成文件上传类的对象并打印错误信息

在file_upload_object.php里修改代码如下:<?php

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2018/3/3 0003

* Time: 上午 11:33

*/

require './FileUpload.class.php';

$file=isset($_FILES['photo'])?$_FILES['photo']:"";

$fileUpload=new FileUpload();

$allPath=$fileUpload->upload($file);

if(!$allPath){

//上传失败,打印错误信息

echo $fileUpload->errorMessage;

//结束运行

die();

}

require './file_upload_html.html';

在html页面修改src属性:

fb67685b95f151617bf0b5e74ff5e6df.png

代码如下:<?php

现有头像:" οnerrοr="this.src='./default.jpg'">

点击选择文件,选好后点击上传,结果如下:

4430dfefbbe84479aab0ad8eaf3fb5d6.png

思考:很明显上传类的头像太大了,如何将上传的头像缩小一点?

(见[PHP]文件与图像教程,里面有详细操作步骤)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值