需求:用户发布文章需要在后台上传一段音频文件,我们要使用php程序获取这段音频文件的播放时长,存放于数据库!解析来我们来看具体的实现方法。
一、下载gitid3这个类库文件(gitId3官网地址:http://www.getid3.org/)
将getid3文件放在thinkphp的extend文件夹
二、编写上传方法
/** * @return string * @throws Exception * File Upload */ function upload(){ $file = request()->file("image"); //这一步是为了防止php配置文件上传大小限制导致file为nullde 情况 if(!empty($_FILES) && empty($file)){ throw new \LogicException('上传文件大小超过配置',10020); } $info = $file->validate(['size'=>15567998,'ext'=>'jpg,png,gif,jpeg,mp3,wma,wav,ogg,ape,acc'])->move(ROOT_PATH . 'public' . DS . 'uploads'); if(!$info){ throw new \Exception($file->getError(),\think\Config::get('error_table.upload')['code']); } $file_path = $info->getSaveName(); $extend = $info->getExtension(); //如果是音频类型的文件我们将调用gitid3类来获取音频播放时长 if($extend == 'mp3' || $extend == 'wma' || $extend == 'wav' || $extend == 'ogg' || $extend == 'ape' || $extend == 'acc'){ \think\Loader::import('MP3\getid3');//引入get3文件 $getId3 = new \getID3(); //打开上面我们上传的文件 $file_info = $getId3->analyze(ROOT_PATH.'public'.DS.'/uploads/'.$file_path); $audio_size = $file_info['playtime_seconds']; //Calculate the duration of the audio return [ 'file_path'=>$file_path, 'audio_size'=>$audio_size //这个就是音频播放时长单位秒 ]; }else{ return [ 'image_path'=>$file_path, ]; } }
三、调用uplod方法
$upload_info = upload();
四、前端
<form class="form form-horizontal" id="form-rule-add" method="post" action="" enctype="multipart/form-data"> <div class="row cl"> <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>音频文件:</label> <div class="formControls col-xs-8 col-sm-9"> <span class="btn-upload form-group"> <input class="input-text upload-url" type="text" id="uploadfile" readonly nullmsg="请上传音频文件!" style="width:200px"> <a href="javascript:void();" class="btn btn-primary radius upload-btn"><i class="Hui-iconfont"></i> 浏览文件</a> <input type="file" name="image" class="input-file"> </span> </div> </div> <?php if(!empty($one['file_path'])){?> <div class="row cl"> <label class="form-label col-xs-4 col-sm-3">原来音频:</label> <div class="formControls col-xs-8 col-sm-9"> <audio src="<?php echo '/uploads/'.$one['file_path']?>" controls="controls"> 您的浏览器不支持音频播放,请切换IE9已上的浏览器. </audio> </div> </div> <?php } ?> <div class="row cl"> <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3"> <input type="hidden" name="id" value="<?php echo $one['id']?>"> <input class="btn btn-primary radius" type="submit" value=" 提交 "> </div> </div> </form>
本文连接:http://www.phpbloger.com/article/33 文章都为原创,转载请注明出处!
来自 http://www.phpbloger.com/article/33