温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Thinkphp如何使用form-builder上传视频

发布时间:2021-07-05 16:24:18 来源:亿速云 阅读:324 作者:chen 栏目:编程语言

这篇文章主要介绍“Thinkphp如何使用form-builder上传视频”,在日常操作中,相信很多人在Thinkphp如何使用form-builder上传视频问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Thinkphp如何使用form-builder上传视频”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

增加前端代码(待更新)


后台代码

    /**
     * 添加/修改页面
     * @param int $id
     * @return string
     */
     public function addVideo($id = 0,$fodder= '')
    {

        $reply_model = VideoModel::get($id);
        $f = array();
        if (!$reply_model) {
            $f[] = Form::input('title', '标题:', '');
            $f[] = Form::textarea('desc', '简介:', '');
            $f[] = Form::uploadFileOne('video_url','视频链接',Url::buildUrl('file_upload',array(['filePath'=>'video_url'])));
        } else {
            $f[] = Form::input('title', '标题:',  $reply_model->getData('title'));
            $f[] = Form::textarea('desc', '简介:', $reply_model->getData('desc'));
            $f[] = Form::uploadFileOne('video_url','视频链接',Url::buildUrl('file_upload',array(['filePath'=>'video_url'])),$reply_model->getData('video_url'));
        }

        $form = Form::make_post_form('添加用户通知', $f, Url::buildUrl('saveVideo', array('id' => $id)));
        $this->assign(compact('form'));
        return $this->fetch('public/form-builder');

    }

    /**
     * 文件上传
     * 
     * */
    public function file_upload()
    {

        //如何在用户点击确认的时候 视频保存下来 意思就是用户不点击提交的时候 脚本结束时 视频就在临时文件夹下一起销毁了 这是一个值得思考的问题
        $val= new Validate();
        //上传文件
        $file = request()->file('video_url');
        //编写上传规则,必须是上传文件,必须是  mp4,wma等后缀
        $validate = $val->rule([ 'video_url' =>[ 'fileExt'=>'mp4,wma']]);
        //得到上传文件和规则比对
        $result = $validate->check([ 'video_url' => $file ]);
        //通过输出地址,否则输出错误
        if ($result) {
            $info = \think\facade\Filesystem::putFile('video', $file);
//            $info = $file->move('uploads');
            //上面产生了右斜杠修改成左斜杠
            $getSaveName=str_replace("\\","/",$info);
            $fileUrl = '/uploads/'.$getSaveName;
            //获取当前域名
//            $server_name = $_SERVER['SERVER_NAME'];
            $server_name = $_SERVER['HTTP_HOST'];
            //获取当前网址协议
            $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
            $video_url = $http_type.$server_name.$fileUrl;
            return Json::successful('上传成功!',['filePath'=>$video_url]);

        } else {
            return Json::fail($validate->getError());
        }

    }

     /**
     * 添加/修改
     * @param int $id
     */

    //上传视频的逻辑 前端发起请求->临时文件->验证文件->保存临时视频文件 ->返回路径->保存路径
    public function saveVideo($id = 0)
    {
        $data = UtilService::postMore([
            ['title', ''],
            ['desc', ''],
            ['video_url', '']
        ]);

        //也就是这里需要一个验证和保存临时文件的操作
        if(empty($data['title'])){
            return JsonService::fail('标题不为空!');
        }elseif (empty($data['desc'])){
            return JsonService::fail('简介不为空!');
        }elseif (empty($data['video_url'])){
            return JsonService::fail('视频不为空!');
        }else{
            if ($id) {
                if (VideoModel::where('id', $id)->update($data)) {
                    return JsonService::success('修改成功');
                } else {
                    return JsonService::fail('修改失败或者您没有修改什么!');
                }
            } else {
                if ($res = VideoModel::create($data)) {
                    return JsonService::success('保存成功', ['id' => $res->id]);
                } else {
                    return JsonService::fail('保存失败!');
                }
            }
        }

    }

到此,关于“Thinkphp如何使用form-builder上传视频”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI