1.
首先在数据表中建立以file为后缀的视频字段名;
在html的上传按钮中,添加两个属性data-mimetype=”mp3,mp4,avi,flv,wmv”等等视频类型属性和data-maxsize=”100M”即视频大小的最大值;如:
<div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('Vediofile')}:</label> <div class="col-xs-12 col-sm-8"> <div class="input-group"> <input id="c-vediofile" class="form-control" size="50" name="row[vediofile]" type="text"> <div class="input-group-addon no-border no-padding"> <span><button type="button" id="plupload-vediofile" class="btn btn-danger plupload" data-input-id="c-vediofile" data-mimetype="mp4,mp3,avi,flv,wmv" data-multiple="false" data-maxsize="50M"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> <span><button type="button" id="fachoose-vediofile" class="btn btn-primary fachoose" data-input-id="c-vediofile" data-mimetype="mp4,mp3,avi,flv,wmv" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span> </div> <span class="msg-box n-right" for="c-vediofile"></span> </div> </div> </div>
2.修改application/extra/upload.php中的maxsize配置:
<?php //上传配置 return [ // .... /** * 最大可上传大小 */ 'maxsize' => '50mb', /** * 可上传的文件类型(新增mp4,mp3,avi,flv,wmv视频文件后缀) */ 'mimetype' => 'jpg,png,bmp,jpeg,gif,zip,rar,xls,xlsx,mp4,mp3,avi,flv,wmv', // .... ]; ?> //////我的后台修改过后文件样式::: <?php //上传配置 return [ /** * 上传地址,默认是本地上传 */ 'uploadurl' => 'ajax/upload', /** * CDN地址 */ 'cdnurl' => '', /** * 文件保存格式 */ 'savekey' => '/uploads/{year}{mon}{day}/{filemd5}{.suffix}', /** * 最大可上传大小 */ 'maxsize' => '50mb', /** * 可上传的文件类型 */ 'mimetype' => 'jpg,png,bmp,jpeg,gif,zip,rar,xls,xlsx,mp4,mp3', /** * 是否支持批量上传 */ 'multiple' => false, ]; ?>
3.修改php.ini配置文件后,并重新启动php:
a、 file_uploads = On ;是否允许通过HTTP上传文件的开关。默认为On即是开
b、upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
c、upload_max_filesize = 8M ;望文生意,即允许上传文件大小的最大值。默认为2M
d、post_max_size = 8M ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
找到文件上传的php,在application/admin/controller/Ajax.php,修改里面的upload方法,在此基础上添加视频上传的代码即可
<?php /** * 上传文件 */ public function upload() { //dump(123);die; Config::set('default_return_type', 'json'); $file = $this->request->file('file'); if (empty($file)) { $this->error(__('No file upload or server upload limit exceeded')); } //判断是否已经存在附件 $sha1 = $file->hash(); $upload = Config::get('upload'); preg_match('/(d+)(w+)/', $upload['maxsize'], $matches); $type = strtolower($matches[2]); $typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3]; $size = (int)$upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0); $fileInfo = $file->getInfo(); $suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); $suffix = $suffix ? $suffix : 'file'; $mimetypeArr = explode(',', strtolower($upload['mimetype'])); $mimetypeArr=array_merge($mimetypeArr,['mp4','mp3','avi','flv','wmv']); $typeArr = explode('/', $fileInfo['type']); //验证文件后缀 if ($upload['mimetype'] !== '*' && ( !in_array($suffix, $mimetypeArr) || (stripos($typeArr[0] . '/', $upload['mimetype']) !== false && (!in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr))) ) ) { //dump(123456);die; $this->error(__('Uploaded file format is limited')); } $replaceArr = [ '{year}' => date("Y"), '{mon}' => date("m"), '{day}' => date("d"), '{hour}' => date("H"), '{min}' => date("i"), '{sec}' => date("s"), '{random}' => Random::alnum(16), '{random32}' => Random::alnum(32), '{filename}' => $suffix ? substr($fileInfo['name'], 0, strripos($fileInfo['name'], '.')) : $fileInfo['name'], '{suffix}' => $suffix, '{.suffix}' => $suffix ? '.' . $suffix : '', '{filemd5}' => md5_file($fileInfo['tmp_name']), ]; $savekey = $upload['savekey']; $savekey = str_replace(array_keys($replaceArr), array_values($replaceArr), $savekey); $uploadDir = substr($savekey, 0, strripos($savekey, '/') + 1); $fileName = substr($savekey, strripos($savekey, '/') + 1); $splInfo = $file->validate(['size' => $size])->move(ROOT_PATH . '/public' . $uploadDir, $fileName); if ($splInfo) { $imagewidth = $imageheight = 0; if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf', 'mp4', 'mp3'])) { $imgInfo = getimagesize($splInfo->getPathname()); $imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth; $imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight; } $params = array( 'admin_id' => (int)$this->auth->id, 'user_id' => 0, 'filesize' => $fileInfo['size'], 'imagewidth' => $imagewidth, 'imageheight' => $imageheight, 'imagetype' => $suffix, 'imageframes' => 0, 'mimetype' => $fileInfo['type'], 'url' => $uploadDir . $splInfo->getSaveName(), 'uploadtime' => time(), 'storage' => 'local', 'sha1' => $sha1, ); $attachment = model("attachment"); $attachment->data(array_filter($params)); $attachment->save(); hinkHook::listen("upload_after", $attachment); $this->success(__('Upload successful'), null, [ 'url' => $uploadDir . $splInfo->getSaveName() ]); } else { // 上传失败获取错误信息 $this->error($file->getError()); } }