Kelas muat naik fail

1. Tentukan atribut ahli kelas muat naik fail

Pertama sekali, kita mesti mempertimbangkan atribut apa yang diperlukan untuk memuat naik fail ia untuk melihat parameter yang ada dalam $_FILES

Buat fail_upload_html.html baharu:

Kodnya adalah seperti berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>用户头像上传</h2>
    <p>用户姓名:张三</p>
    现有头像:<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>

Dapatkan parameter yang diserahkan oleh borang, buat fail_upload_object.php baharu, kodnya adalah seperti follows

<?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 "<pre>";
print_r($file);
echo "</pre>";

Selepas menyerahkan borang, hasil cetakan adalah seperti berikut:

微信图片_20180303130949.png

Oleh itu Anda tahu bahawa kelas fail muat naik perlu mengetahui nama fail yang dimuat naik, jenis fail, bendera ralat , dan saiz muat naik. Jadi apabila kita menulis kelas fail muat naik, kita perlu mengetahui atribut ini Buat kelas fail muat naik baharu, FileUpload.Class.php Kodnya adalah seperti berikut:

<?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, kaedah kelas muat naik fail

Tulis kaedah untuk mengurus atribut kelas muat naik fail mengikut keperluan perniagaan anda sendiri,

seperti tetapan saiz muat naik, muat naik Simpan tetapan laluan, nama kaedah ialah muat naik( )

Kod khusus adalah seperti berikut:

<?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, pemprosesan muat naik fail

Panggil kelas untuk menjana objek kelas muat naik fail dan cetak mesej ralat Ubah suai kod dalam file_upload_object.php seperti berikut:

<?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';

Ubah suai atribut src pada halaman html:

Kodnya adalah seperti berikut: 微信图片_20180303134258.pngklik C

<?php
现有头像:<img src="<?php echo $allFilePath; ?>" onerror="this.src='./default.jpg'">
selepas memilih fail dan pilih . Keputusan adalah seperti berikut:

Berfikir: Jelas sekali avatar yang dimuat naik terlalu besar, bagaimana untuk menjadikan avatar yang dimuat naik lebih kecil?

微信图片_20180303134427.png

untuk langkah operasi terperinci)

Meneruskan pembelajaran
||
<?php echo "文件上传类的写法";
  • Cadangan kursus
  • Muat turun perisian kursus