one($key); if ($config) { $this->initFile($key, $file, $file, $width, $height, $size); } return 'ok'; } private function initFile($key, $file, $source, $width = false, $height = false, $size = false, $search = '') { $temp = explode('/', $file); $name = $temp[count($temp) - 1]; $temp = explode('.', $name); $name = $temp[0]; $ext = $temp[count($temp) - 1]; $info = Dever::load('upload/file-name', array('where_name' => $name, 'where_upload' => $key)); $data['name'] = $name; $data['file'] = $file; $data['key'] = md5($file); $data['ext'] = '.' . $ext; if ($width) { $data['width'] = $width; } if ($height) { $data['height'] = $height; } if ($size) { $data['size'] = $size; } $data['upload'] = $key; if ($search) { $data['search'] = $search; } if ($info) { $data['where_id'] = $info['id']; Dever::db('upload/file')->update($data); } else { $data['source_name'] = $source; Dever::db('upload/file')->insert($data); } } public function addFile() { $file = Dever::input('file'); $key = Dever::input('key'); $source = Dever::input('source'); $search = Dever::input('search'); $config = Dever::db('upload/upload')->one($key); if ($config) { if ($config['yun'] > 0 && $config['vod_convert'] == 2) { $yun = Dever::db('upload/yun')->one($config['yun']); if ($yun) { $this->convert($key, $file, $config, $yun); } } $this->initFile($key, $file, $source, false, false, false, $search); } } private function convert($key, $file, $config, $yun) { $accessKey = $yun['appkey']; $secretKey = $yun['appsecret']; $host = $yun['host']; $auth = new \Qiniu\Auth($accessKey, $secretKey); $bucket = $config['bucket']; # 转码 //转码是使用的队列名称。 https://portal.qiniu.com/mps/pipeline $pipeline = $config['pipeline']; if ($pipeline) { $array = explode(',', $pipeline); $index = array_rand($array); if (isset($array[$index])) { $pipeline = $array[$index]; } } else { $pipeline = 'convert'; } $ext = 'mp4'; if (strstr($file, '.mp3') || strstr($file, '.wma') || strstr($file, '.wav')) { $ext = 'mp3'; } $force = false; //转码完成后通知到你的业务服务器。 $notifyUrl = 'http://375dec79.ngrok.com/notify.php'; $notifyUrl = false; $config = new \Qiniu\Config(); //$config->useHTTPS=true; $pfop = new \Qiniu\Processing\PersistentFop($auth, $config); //要进行转码的转码操作。 http://developer.qiniu.com/docs/v6/api/reference/fop/av/avthumb.html //$fops = "avthumb/m3u8/s/640x360/vb/1.4m|saveas/" . \Qiniu\base64_urlSafeEncode($bucket . ":qiniu_640x360.mp4"); $fops = "avthumb/mp4/vb/1.4m|saveas/" . \Qiniu\base64_urlSafeEncode($bucket . ':' . $file . '_c.' . $ext); list($id, $err) = $pfop->execute($bucket, $file, $fops, $pipeline, $notifyUrl, $force); /* echo "\n====> pfop avthumb result: \n"; if ($err != null) { var_dump($err); } else { echo "PersistentFop Id: $id\n"; } die; //查询转码的进度和状态 list($ret, $err) = $pfop->status($id); echo "\n====> pfop avthumb status: \n"; if ($err != null) { var_dump($err); } else { var_dump($ret); }*/ } public function token() { $result = Dever::input('result', 2); $key = Dever::input('key'); $upload = Dever::db('upload/upload')->one($key); if (!$upload) { return; } if (!$upload['yun']) { return; } $config = Dever::db('upload/yun')->one($upload['yun']); if (!$config) { return; } $accessKey = $config['appkey']; $secretKey = $config['appsecret']; $host = $config['host']; $auth = new \Qiniu\Auth($accessKey, $secretKey); $bucket = $upload['bucket']; $policy = array( 'callbackUrl' => Dever::url('qiniu.callback', 'upload'), 'callbackBody' => 'filename=$(fname)&key=$(key)&filesize=$(fsize)&width=$(imageInfo.width)&height=$(imageInfo.height)' ); // 生成上传Token $token = $auth->uploadToken($bucket, null, 3600); $domain = 'http://up-z1.qiniup.com/'; $ret = array('uptoken' => $token, 'domain' => $domain, 'host' => $config['host']); if ($result == 1) { return $ret; } echo json_encode($ret);die; } }