• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

Laravel在线教育平台(五)直播课程管理、图片上传、首页点播、对象存储、日期插件、推流地址

Mr.Lee 由 Mr.Lee
2018年5月19日
在 Laravel, Laravel在线教育平台, 后台框架
0
Laravel在线教育平台(六)数据字典、数据迁移、后台试卷管理、试卷导出、答题处理、支付宝
0
分享
1
浏览

Laravel框架实战-在线教育平台(5)

一、直播课程管理(获取推流地址、日期插件)

1、获取推流地址

步骤1:定义模型

/**

* 关联直播流模型(1:1)

* 语法:模型名::with(’role’)->first()

* @return \Illuminate\Database\Eloquent\Relations\HasOne

*/

public function stream()

{

#return $this->hasOne(关联模型名,关联模型公共字段,本模型公共字段)

return $this->hasOne(‘App\Http\Model\Stream’,’id’, ‘stream_id’);

}

步骤2:修改控制器

步骤3:修改视图

日期插件

配置手册:http://www.my97.net/demo/index.htm

图片上传【★★★】

webuploader插件介绍

说明:就是由百度团队开发的一个上传插件

地址:http://fex.baidu.com/webuploader/

使用

  • 语法:

检查是否存在指定键:$request->hasFile(‘file’)

检查是否上传成功: $request->file(‘file’)->isValid()

存储文件: $request->file(‘file’)->store(‘子路径’,存储驱动器的名称);

  • 实现步骤:

步骤1:将官方下载的文件移动到public目录下的webuploader文件夹中

步骤2:(视图代码)打开手册引入静态资源并复制初始化代码


<div class=”row cl”>

<label class=”form-label col-xs-4 col-sm-3″>封面</label>

<div class=”formControls col-xs-8 col-sm-9″>

<!–dom结构部分–>

<div id=”uploader-demo”>

<!–用来存放item–>

<div id=”fileList” class=”uploader-list”></div>

<div id=”filePicker”>选择图片</div>

</div>

<div id=”showimg”>

</div>

<div id=”uploading” style=”width:0%;height:20px;background: blue;”></div>

<input required type=”text” class=”input-text” value=”” placeholder=”” id=”img” name=”img”>

</div>

</div>

<!–引入CSS–>

<link rel=”stylesheet” type=”text/css” href=”{{ asset(‘webuploader’) }}/webuploader.css”>

<!–引入JS–>

<script type=”text/javascript” src=”{{ asset(‘webuploader’) }}/webuploader.js”></script>

<script type=”text/javascript”>

// 初始化Web Uploader

var uploader = WebUploader.create({

// 设置自定义请求数据

formData: {

_token: ‘{{ csrf_token() }}’

},

// 选完文件后,是否自动上传。

auto: true,

// swf文件路径

swf: ‘{{ asset(“webuploader”) }}/Uploader.swf’,

// 文件接收服务端。

server: ” {{ url(‘admin/upload/file’) }}”,

// 选择文件的按钮。可选。

// 内部根据当前运行是创建,可能是input元素,也可能是flash.

pick: ‘#filePicker’,

// 只允许选择图片文件。

accept: {

title: ‘Images’,

extensions: ‘gif,jpg,jpeg,bmp,png’,

mimeTypes: ‘image/*’

}

});

// 文件上传成功,给item添加成功class, 用样式标记上传成功。

uploader.on( ‘uploadSuccess’, function( file, response ) {

//file是原上传文件信息,相当于php的$_FILES数据

//response是php上传文件响应的数据

console.log(response);

$(‘#img’).val(response.info);

var imgSrc = “{{asset(‘uploads’)}}” + ‘/’ + response.info;

$(‘#showimg’).html(‘<img src=”‘+imgSrc+'” width=”120″ height=”80″ />’)

});

// 文件上传过程中创建进度条实时显示。

uploader.on( ‘uploadProgress’, function( file, percentage ) {

$(‘#uploading’).css( ‘width’, percentage * 100 + ‘%’ );

});

</script>

步骤3:定义路由,并创建控制器书写上传功能代码


<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

class UploadController extends Controller

{

//上传文件

public function file(Request $request)

{

//1.判断$_FILES[file键]是否存在,并且$_FILES[键][error] 等于0 (也就是没有错误)

if ($request->hasFile(‘file’) && $request->file(‘file’)->isValid()) {

//2.上传文件

//语法: request->file(‘file’)->store(‘子路径’,存储驱动器的名称);

//store是官方存储文件方法

//存储驱动器的名称:对应config/filesystems.php文件

//子路径: 指会在config/filesystems.php文件声明的上传文件夹下再创建一个文件

$filename = $request->file(‘file’)->store(‘img’, ‘upload’);

return [‘info’ => $filename];

}

}

}

更改图片上传规则到七牛云【★★★】

1)对象存储介绍

对象存储简单理解:就是用来存放静态资源的服务器

好处:减少冗余,便于维护

2)使用(zgldh/qiniu-laravel-storage)

步骤1:下载并配置根据下图文档 composer reqiure zgldh/qiniu-laravel-storage


步骤2:打开控制器方法将上传到laravel项目代码更改为上传到七牛云即可



<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

class UploadController extends Controller

{

//上传文件

public function file(Request $request)

{

//1.判断$_FILES[file键]是否存在,并且$_FILES[键][error] 等于0 (也就是没有错误)

if ($request->hasFile(‘file’) && $request->file(‘file’)->isValid()) {

//2.上传文件

//语法: request->file(‘file’)->store(‘子路径’,存储驱动器的名称);

//store是官方存储文件方法

//存储驱动器的名称:对应config/filesystems.php文件

//子路径: 指会在config/filesystems.php文件声明的上传文件夹下再创建一个文件

//$filename = $request->file(‘file’)->store(‘img’, ‘upload’);

###更改七牛云存储图片

//定义上传文件名称

$filename = uniqid(‘goods’.date(‘YmdHis’,time()));

//从临时文件中获取图片数据

$imgData = file_get_contents($request->file(‘file’)->getPathName());

//上传

\Storage::disk(‘qiniu’)->put($filename, $imgData); //上传文件 file_get_contents(XX.PNG)

//获取下载地址(图片地址)

$downloadUrl = \Storage::disk(‘qiniu’)->getDriver()->downloadUrl($filename);

return [‘info’ => $downloadUrl];

}

}

}

更改直播播放视图

步骤1:将直播详情页静态代码替换edu项目中的直播详情页

步骤:将直播地址更改为变量

首页点播功能

快进看视频,主要理解思路,最好自己写一写

图片懒加载:http://www.jq22.com/jquery-info390

四、总结

本项目中使用了以下几个插件/功能:

Laravel自带组件:

DebugBar(调试工具)、

laravelexcel(导出导入excel文件)、

QiniuSDK(云存储)、

GuzzleHttp(发送请求)

JQuery插件:

datatables(数据表格无刷新分页)、

webuploader(上传文件)、

validate(表单验证插件)、

layer(弹框插件)

直播内容

七牛直播云

OBS推流软件使用

视频播放器Ckplayer(拉流)

标签: 图片上传对象存储推流地址日期插件直播课程管理首页点播
上一篇文章

Laravel在线教育平台(六)数据字典、数据迁移、后台试卷管理、试卷导出、答题处理、支付宝

下一篇文章

Laravel在线教育平台(四)直播、七牛云、OBS、直播流管理、直播课程管理、首页直播、在线观看

下一篇文章
Laravel在线教育平台(六)数据字典、数据迁移、后台试卷管理、试卷导出、答题处理、支付宝

Laravel在线教育平台(四)直播、七牛云、OBS、直播流管理、直播课程管理、首页直播、在线观看

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3