亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

文件上傳類(lèi)

1,確定文件上傳類(lèi)的成員屬性

首先得考慮上傳文件需要哪些屬性,我們可以隨便寫(xiě)一個(gè)file文件的post方式的表單提交,然后打印看看$_FILES里有哪些參數(shù)

新建file_upload_html.html文件:

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>用戶頭像上傳</h2>
    <p>用戶姓名:張三</p>
    現(xiàn)有頭像:<img src="" onerror="this.src='./default.jpg'">
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="photo"><br>
        <input type="submit" value="上傳">
    </form>
</body>
</html>

獲取表單提交的參數(shù),新建file_upload_object.php,代碼如下

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/3 0003
 * Time: 上午 11:33
 */
require './file_upload_html.html';
//獲取表單提交的參數(shù)
$file=isset($_FILES['photo'])?$_FILES['photo']:"";
echo "<pre>";
print_r($file);
echo "</pre>";

提交表單之后打印結(jié)果如下:

微信圖片_20180303130949.png

由此可知道上傳文件類(lèi)需要知道上傳的文件名稱(chēng),文件類(lèi)型,錯(cuò)誤標(biāo)志位,上傳的大小

因此我們寫(xiě)一個(gè)上傳文件類(lèi)需要知道這些屬性,新建一個(gè)上傳文件類(lèi),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,文件上傳類(lèi)的方法

對(duì)文件上傳類(lèi)的屬性根據(jù)自己業(yè)務(wù)的需求寫(xiě)一個(gè)方法進(jìn)行管理,

比如上傳大小的設(shè)置,上傳保存路徑的設(shè)置,方法名叫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'
    );//文件類(lèi)型
    public $maxSize=1048576;//1M=1024*1024,上傳的容量
    public $uploadSavePath="./uploads"; //上傳保存的路徑
    public $errorMessage=""; //錯(cuò)誤信息
    public function upload($file){
        //上傳類(lèi)首先得判斷上傳存不存在錯(cuò)誤,錯(cuò)誤信息有123467六種情況,0為正常上傳
        if($file['error']>0){
            $errorMsg="錯(cuò)誤信息為:";
            switch ($file['error']){
                case 1:$errorMsg.="文件大小超過(guò)了php.ini中upload_max_filesize選項(xiàng)限制的值";
                    break;
                case 2:$errorMsg.="文件大小超過(guò)了表單中max_file_size選項(xiàng)指定的值!";
                    break;
                case 3:$errorMsg.="文件只有部分被上傳!";
                    break;
                case 4:$errorMsg.="沒(méi)有文件被上傳!";
                    break;
                case 6:$errorMsg.="找不到臨時(shí)文件夾!";
                    break;
                case 7:$errorMsg.="臨時(shí)文件寫(xiě)入失敗";
                    break;
                default:$errorMsg.='未知錯(cuò)誤!';
                    break;
            }
            return false;
        }
        //判斷上傳的文件是否屬于$type內(nèi)
        if(!in_array($file['type'],$this->type)){
            //不在所屬類(lèi)型內(nèi)時(shí)
            $this->errorMessage="未定義的文件上傳類(lèi)型";
            return false;
        }
        //判斷文件上傳的大小不能超過(guò)所定義的大小
        if($file['size']>$this->maxSize){
            $this->errorMessage="超出上傳所限制的最大上傳容量";
            return false;
        }
        //給上傳的圖片重命名
        $newFileName=uniqid("php_").strrchr($file['name'],".");
        //設(shè)置上傳文件的全目錄 ./uploads/2018-03-03
        $allPath1=$this->uploadSavePath."/".date("Y-m-d");
        $allPath=$this->uploadSavePath."/".date("Y-m-d")."/".$newFileName;
        //判斷這個(gè)目錄是否存在
        if(!file_exists($allPath1)){
            mkdir($allPath1,'0777',true);
        }
        //移動(dòng)
        if(!move_uploaded_file($file['tmp_name'],$allPath)){
            $this->errorMessage="文件上傳失敗";
        }else{
            return $allPath;
        };
    }
}

3,文件上傳處理

對(duì)類(lèi)進(jìn)行調(diào)用生成文件上傳類(lèi)的對(duì)象并打印錯(cuò)誤信息

在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){
    //上傳失敗,打印錯(cuò)誤信息
    echo $fileUpload->errorMessage;
    //結(jié)束運(yùn)行
    die();
}
require './file_upload_html.html';

在html頁(yè)面修改src屬性:

微信圖片_20180303134258.png

代碼如下:

<?php
現(xiàn)有頭像:<img src="<?php echo $allFilePath; ?>" onerror="this.src='./default.jpg'">

點(diǎn)擊選擇文件,選好后點(diǎn)擊上傳,結(jié)果如下:

微信圖片_20180303134427.png

思考:很明顯上傳類(lèi)的頭像太大了,如何將上傳的頭像縮小一點(diǎn)?

(見(jiàn)[PHP]文件與圖像教程,里面有詳細(xì)操作步驟)


繼續(xù)學(xué)習(xí)
||
<?php echo "文件上傳類(lèi)的寫(xiě)法";
提交重置代碼