phalapi框架介面實現視訊上傳
config目錄下的app.php檔案先配置好本地上傳
/**
* 本地上傳
*/
'UCloudEngine' => 'local',
/**
* 本地儲存相關配置(UCloudEngine為local時的配置)
*/
'UCloud' => array(
//對應的檔案路徑
'host' => 'http://localhost.com/api/upload'
),
Appapi/Api/Live.php 檔案
class Api_Live extends Api_Common {
public function getRules() {
return array(
'uploadVideo'=>array(
'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '會員ID'),'token' => array('name' => 'token', 'require' => true, 'min' => 1, 'desc' => '會員token'),
'isshow'=>array('name'=>'isshow','require'=>true,'desc'=>'是否顯示,1顯示。0不顯示,存成草稿'),
'title'=>array('name' => 'title', 'type' => 'string','require'=>true,'desc'=>'視訊標題'),
'videoType'=>array('name'=>'videoType','type'=>'int','require'=>true,'min'=>0,'desc'=>'視訊型別'),
'videoDesc'=>array('name'=>'videoDesc','type'=>'string','desc'=>'視訊描述'),
'file' => array('name' => 'file','type' => 'file', 'min' => 0,/*'range' => array('video/eot-mp4','video/mp4'),'ext' => array('mp4'),*/'desc' => '視訊資訊'),
'file1' => array('name' => 'file1','type' => 'file', 'min' => 0, 'max' => 1024 * 1024 * 30, 'range' => array('image/jpg', 'image/jpeg', 'image/png'), 'ext' => array('jpg', 'jpeg', 'png'),'desc' => '縮圖資訊'),
),
);
}
/**
*上傳視訊
*@desc 使用者上傳視訊
*@return int code 操作碼,0表示成功
*@return string msg 提示資訊
*@return array info 返回資料
*/
public function uploadVideo(){
$uid=$this->uid;
$token=$this->token;
$isshow=$this->isshow;
$title=$this->title;
$videoType=$this->videoType;
$videoDesc=$this->videoDesc;
$checkToken=$this->checkToken($uid,$token);
if($checkToken==700){
$rs['code'] = $checkToken;
$rs['msg'] = 'Token錯誤或已過期,請重新登入';
return $rs;
}
if (!isset($_FILES['file'])) {
$rs['code'] = 1001;
$rs['msg'] = '請選擇上傳視訊';
return $rs;
}
if (!isset($_FILES['file1'])) {
$rs['code'] = 1;
$rs['msg'] = '請上傳縮圖';
return $rs;
}
if ($_FILES["file"]["error"] > 0) {
$rs['code'] = 1002;
$rs['msg'] = '視訊上傳失敗,請稍後重試';
DI()->logger->debug('failed to upload file with error: ' . $_FILES['file']['error']);
return $rs;
}
if ($_FILES["file1"]["error"] > 0) {
$rs['code'] = 2;
$rs['msg'] = '縮圖上傳失敗,請稍後重試';
DI()->logger->debug('failed to upload file with error: ' . $_FILES['file']['error']);
return $rs;
}
if($title==""){
$rs['code'] = 1003;
$rs['msg'] = '請填寫視訊主題';
return $rs;
}
if($videoType<0){
$rs['code'] = 1004;
$rs['msg'] = '請選擇視訊型別';
return $rs;
}
if($videoDesc==""){
$rs['code'] = 1005;
$rs['msg'] = '請填寫視訊描述';
return $rs;
}
$rs=array('code'=>0,'msg'=>'','info'=>array());
//介面設定上傳路徑【因為在config下的app.php檔案中設定的上傳根目錄為http://localhost.com/api/upload,所以下面的設定會在此目錄下新新增相應的資料夾---video/以日期形式建立目錄】
DI()->ucloud->set('save_path','video/'.date("Ymd"));
//上傳視訊
$res = DI()->ucloud->upfile($_FILES['file']);
//上傳縮圖
$res1 = DI()->ucloud->upfile($_FILES['file1']);
$video_url= $res['url'];
$covers=$res1['url'];
$data=array(
"uid"=>$uid,
'isshow'=>$isshow,
"title"=>$title,
"type"=>$videoType,
"desc"=>$videoDesc,
"video_url"=>$video_url,
"covers"=>$covers,
"addtime"=>time()
);
@unlink($_FILES['file']['tmp_name']);
$domain = new Domain_Live();
$result=$domain->uploadVideo($data);
if($result!=1){
$rs['code'] = 1006;
$rs['msg'] = '視訊上傳失敗';
return $rs;
}else{
$rs['code']=0;
$rs['msg']="視訊上傳成功";
}
return $rs;
}
}
Appapi/Domain下的Live.php檔案
class Domain_Live {
public function uploadVideo($data){
$rs = array();
$model = new Model_Live();
$rs = $model->uploadVideo($data);
return $rs;
}
}
Appapi/Model下的Live.php檔案
/**
* 上傳視訊
*/
public function uploadVideo($data){
$rs=DI()->notorm->videos
->insert($data);
if($rs!==false){
return 1;
}else{
return 1003;
}
}
資料庫結構