<?php
/**
 * lemocms
 * ============================================================================
 * 版权所有 2018-2027 lemocms,并保留所有权利。
 * 网站地址: https://www.lemocms.com
 * ----------------------------------------------------------------------------
 * 采用最新Thinkphp6实现
 * ============================================================================
 * Author: yuege
 * Date: 2019/8/2
 */
namespace app\admin\controller;
use app\common\controller\Backend;

use FFMpeg\FFMpeg;
use think\facade\Config;
use think\facade\Env;
use think\facade\Request;
use lemo\helper\DataHelper;

class Uploads extends Backend{

    //上传验证规则
    protected $uploadValidate = [
        'image' => 'filesize:102400|fileExt:jpg,png,gif,jpeg,rar,zip,avi,mp4,rmvb,3gp,flv,mp3,txt,doc,xls,ppt,pdf,xls,docx,xlsx,doc,wmv'
    ];
    protected $imageValidate = [
        'image' => 'filesize:10240|fileExt:jpg,png,gif,jpeg,bmp,svg,wmv'

    ];
    protected $videoValidate = [
        'file' => 'filesize:10240|avi,rmvb,3gp,flv,mp4,wmv'

    ];
    protected $voiceValidate = [
        'file' => 'filesize:2048|mp3,wma,wav,amr,wmv'

    ];
    public function initialize()

    {
        $fileExt = getConfigByCode('upload_file_type');
        $filemax = getConfigByCode('upload_file_max')*1024;
        $this->uploadValidate = ['image'=>
            'filesize'.$filemax.'|'.$fileExt,
        ];
        parent::initialize(); // TODO: Change the autogenerated stub
    }

    /**
     * 文件上传
     * @return false|string
     */
    public function Uploads(){
        //获取上传文件表单字段名
        $fileKey = array_keys(request()->file());

        for ($i = 0; $i < count($fileKey); $i++) {
            //获取表单上传文件
            $file = request()->file($fileKey[$i]);
            try {
                validate($this->uploadValidate)->check(DataHelper::objToArray($file));
                $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
                $savename= str_replace('\\', "/",  $savename);
                $path[] = '/storage/' . $savename;
            } catch (\think\exception\ValidateException $e) {
                $path = '';
                $error = $e->getMessage();
            }
        }

        if (!empty($path)) {
            $result['code'] = 1;
            //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
            if (Request::param('responseType') == 'json') {
                $result["url"] = $path[0];
            } else {
                $result["url"] = $path;
            }
            $result['msg'] = lang('upload success');
            return $result;
        } else {
            //上传失败获取错误信息
            $result['url'] = '';
            $result['msg'] = $error;
            $result['code'] = 0;
            return $result;
        }
    }

    /**
     * 文件上传
     * @return false|string
     */
    public function imageUploads(){

        //获取上传文件表单字段名
        $fileKey = array_keys(request()->file());
        for ($i = 0; $i < count($fileKey); $i++) {
            //获取表单上传文件
            $file = request()->file($fileKey[$i]);
            try {
                validate($this->imageValidate)
                    ->check(DataHelper::objToArray($file));
                $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
                $savename= str_replace('\\', "/",  $savename);
                $path[] = '/storage/' . $savename;
            } catch (\think\exception\ValidateException $e) {
                $path = '';
                $error = $e->getMessage();
            }
        }

        if (!empty($path)) {
            $result['code'] = 1;
            //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
            if (Request::param('responseType') == 'json') {
                $result["url"] = $path[0];
            } else {
                $result["url"] = $path;
            }
            $result['msg'] =lang('upload success');
            return $result;
        } else {
            //上传失败获取错误信息
            $result['url'] = '';
            $result['msg'] = $error;
            $result['code'] = 0;
            return $result;
        }
    }

    public function text()
    {


}
    /**
     * 文件上传
     * @return false|string
     */
    public function videoUploads(){

//        ini_set("upload_max_filesize","10M");//即允许上传文件大小的最大值
//        ini_set("post_max_size","10M");//指通过表单POST给PHP的所能接收的最大值
//        ini_set("memory_limit","10M");//;每个PHP页面所吃掉的最大内存
//        ini_set("max_execution_time","3600");//每个PHP页面运行的最大时间值(秒)
//        ini_set("max_input_time","3600");//每个PHP页面接收数据所需的最大时间(秒)

        //获取上传文件表单字段名
        $fileKey = array_keys(request()->file());
        for ($i = 0; $i < count($fileKey); $i++) {
            //获取表单上传文件
            $file = request()->file($fileKey[$i]);
            try {
                validate($this->videoValidate)
                    ->check(DataHelper::objToArray($file));
                $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
                $savename= str_replace('\\', "/",  $savename);
                $path[] = '/storage/' . $savename;
            } catch (\think\exception\ValidateException $e) {
                $path = '';
                $error = $e->getMessage();
            }
        }

        if (!empty($path)) {
            $result['code'] = 1;
            //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
            if (Request::param('responseType') == 'json') {
                $result["url"] = $path[0];
            } else {
                $result["url"] = $path;
            }
            $result['msg'] = lang('upload success');
            return $result;
        } else {
            //上传失败获取错误信息
            $result['url'] = '';
            $result['msg'] = $error;
            $result['code'] = 0;
            return $result;
        }
    }

    /**
     * 文件上传
     * @return false|string
     */
    public function vioceUploads(){

        //获取上传文件表单字段名
        $fileKey = array_keys(request()->file());
        for ($i = 0; $i < count($fileKey); $i++) {
            //获取表单上传文件
            $file = request()->file($fileKey[$i]);
            try {
                validate($this->voiceValidate)
                    ->check(DataHelper::objToArray($file));
                $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
                $savename= str_replace('\\', "/",  $savename);
                $path[] = '/storage/' . $savename;
            } catch (\think\exception\ValidateException $e) {
                $path = '';
                $error = $e->getMessage();
            }
        }

        if (!empty($path)) {
            $result['code'] = 1;
            //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
            if (Request::param('responseType') == 'json') {
                $result["url"] = $path[0];
            } else {
                $result["url"] = $path;
            }
            $result['msg'] = lang('upload success');
            return $result;
        } else {
            //上传失败获取错误信息
            $result['url'] = '';
            $result['msg'] = $error;
            $result['code'] = 0;
            return $result;
        }
    }

}