94 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.5 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();
 | ||
|     }
 | ||
| }
 |