1. 程式人生 > >phalapi框架介面實現視訊上傳

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;
}
}

資料庫結構