94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						||
namespace app\model;
 | 
						||
 | 
						||
use think\Image;
 | 
						||
 | 
						||
class File extends Base
 | 
						||
{
 | 
						||
    const IMG = 'img';
 | 
						||
    const VIDEO = 'video';
 | 
						||
    const FILE = 'file';
 | 
						||
 | 
						||
    //获取文件类型
 | 
						||
    public static function getTypes()
 | 
						||
    {
 | 
						||
        return [
 | 
						||
            'img' => '图片',
 | 
						||
            'video' => '视频',
 | 
						||
            'file' => '文件'
 | 
						||
        ];
 | 
						||
    }
 | 
						||
 | 
						||
    //获取文件列表
 | 
						||
    public static function getList($type = '', $page = 1, $per = 20)
 | 
						||
    {
 | 
						||
        $limit = ($page - 1) * $per;
 | 
						||
        if($type != ''){
 | 
						||
            if(!in_array($type, array_keys(self::getTypes()))){
 | 
						||
                return [];
 | 
						||
            }
 | 
						||
            $items = self::where('type', $type)
 | 
						||
            ->order('id desc');
 | 
						||
        }else{
 | 
						||
            $items = self::order('id desc');
 | 
						||
        }
 | 
						||
        $items = $items->limit($limit, $per)->select()->toArray();
 | 
						||
        foreach($items as &$item){
 | 
						||
            $item['sizeStr'] = sizeToStr($item['size']);
 | 
						||
        }
 | 
						||
        return $items;
 | 
						||
    }
 | 
						||
 | 
						||
    //获取分页列表
 | 
						||
    public static function getListPage($type = '', $per = 20)
 | 
						||
    {
 | 
						||
        if($type != ''){
 | 
						||
            if(!in_array($type, array_keys(self::getTypes()))){
 | 
						||
                return [];
 | 
						||
            }
 | 
						||
            return self::where('type', $type)
 | 
						||
            ->order('id desc')
 | 
						||
            ->paginate([
 | 
						||
                'list_rows' => $per,
 | 
						||
                'query' => [
 | 
						||
                    'type' => $type
 | 
						||
                ]
 | 
						||
            ], false);
 | 
						||
        }else{
 | 
						||
            return self::order('id desc')
 | 
						||
            ->paginate([
 | 
						||
                'list_rows' => $per
 | 
						||
            ], false);
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    //添加,$w_h图片尺寸大小,单位像素,只对type=img时有效
 | 
						||
    public static function add($file, $src, $type = 'img')
 | 
						||
    {
 | 
						||
        $realPath = app()->getRootPath() . ltrim($src,'/');
 | 
						||
        if(is_file($realPath) && $type == 'img'){
 | 
						||
            $img = Image::open($realPath);
 | 
						||
            list($w,$h) = $img->size();
 | 
						||
            $w_h = $w . 'px * ' . $h . 'px';
 | 
						||
        }else{
 | 
						||
            $w_h = '';
 | 
						||
        }
 | 
						||
        return self::create([
 | 
						||
            'type' => $type,
 | 
						||
            'name' => $file->getOriginalName(),
 | 
						||
            'src' => $src,
 | 
						||
            'size' => $file->getSize(),
 | 
						||
            'suffix' => $file->getOriginalExtension(),
 | 
						||
            'mime_type' => $file->getOriginalMime(),
 | 
						||
            'create_time' => time(),
 | 
						||
            'w_h' => $w_h
 | 
						||
        ]);
 | 
						||
    }
 | 
						||
 | 
						||
    //获取所有记录
 | 
						||
    public static function getAll()
 | 
						||
    {
 | 
						||
        return self::select()->toArray();
 | 
						||
    }
 | 
						||
}
 |