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(); \think\Hook::listen("upload_after", $attachment); $this->success(__(\'Upload successful\'), null, [ \'url\' => $uploadDir . $splInfo->getSaveName() ]); } else { // 上传失败获取错误信息 $this->error($file->getError()); } }