离线下载请求及数据库记录

pull/56/head
HFO4 8 years ago
parent 2ade8861c9
commit 126aacca63

@ -29,6 +29,19 @@ class RemoteDownload extends Controller{
return true; return true;
} }
private function insertRecord($aria2,$url){
Db::name("download")->insert([
"pid" => $aria2->pid,
"path_id" => $aria2->pathId,
"owner" => $this->userObj->uid,
"save_dir" => 1,
"status" => "ready",
"msg" => "",
"info"=>"",
"source" =>$url,
]);
}
public function addUrl(){ public function addUrl(){
if(!$this->checkPerimission(0)){ if(!$this->checkPerimission(0)){
return json(['error'=>1,'message'=>'您当前的无用户无法执行此操作']); return json(['error'=>1,'message'=>'您当前的无用户无法执行此操作']);
@ -36,6 +49,11 @@ class RemoteDownload extends Controller{
$aria2Options = Option::getValues(["aria2"]); $aria2Options = Option::getValues(["aria2"]);
$aria2 = new Aria2($aria2Options); $aria2 = new Aria2($aria2Options);
$downloadStart = $aria2->addUrl(input("post.url")); $downloadStart = $aria2->addUrl(input("post.url"));
if($aria2->reqStatus){
$this->insertRecord($aria2,input("post.url"));
}else{
return json(['error'=>1,'message'=>$aria2->reqMsg]);
}
} }
} }

@ -12,27 +12,36 @@ class Aria2 extends Model{
private $saveOptions; private $saveOptions;
public $reqStatus; public $reqStatus;
public $reqMsg; public $reqMsg;
public $pathId;
public $pid;
public function __construct($options){ public function __construct($options){
$this->authToken = $options["aria2_token"]; $this->authToken = $options["aria2_token"];
$this->apiUrl = rtrim($options["aria2_rpcurl"],"/")."/"; $this->apiUrl = rtrim($options["aria2_rpcurl"],"/")."/";
$this->saveOptions = json_decode($options["aria2_options"],true); $this->saveOptions = json_decode($options["aria2_options"],true);
$this->savePath = $options["aria2_tmppath"]; $this->savePath = rtrim(rtrim($options["aria2_tmppath"],"/"),"\\").DS;
} }
public function addUrl($url){ public function addUrl($url){
//{"params": ["token:123123132",["https://www.baidu.com/img/baidu_jgylogo3.gif"],{"dir":"../"}], "jsonrpc": "2.0", "id": "qer", "method": "aria2.addUri"} $this->pathId = uniqid();
$reqFileds = [ $reqFileds = [
"params" => ["token:".$this->authToken,[ "params" => ["token:".$this->authToken,
$url,["dir" => $this->savePath], [$url],["dir" => $this->savePath.$this->pathId],
]], ],
"jsonrpc" => "2.0", "jsonrpc" => "2.0",
"id" => uniqid(), "id" => $this->pathId,
"method" => "aria2.addUri" "method" => "aria2.addUri"
]; ];
$reqFileds["params"][1][1] = array_merge($reqFileds["params"][1][1],$this->saveOptions); $reqFileds["params"][2] = array_merge($reqFileds["params"][2],$this->saveOptions);
$reqFileds = json_encode($reqFileds,JSON_OBJECT_AS_ARRAY); $reqFileds = json_encode($reqFileds,JSON_OBJECT_AS_ARRAY);
$respondData = $this->sendReq($reqFileds); $respondData = $this->sendReq($reqFileds);
if(isset($respondData["result"])){
$this->reqStatus = 1;
$this->pid = $respondData["result"];
}else{
$this->reqStatus = 0;
$this->reqMsg = $respondData["error"]["message"];
}
} }
private function sendReq($data){ private function sendReq($data){
@ -42,13 +51,13 @@ class Aria2 extends Model{
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_TIMEOUT, 15); curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl); // 执行操作 $tmpInfo = curl_exec($curl);
if (curl_errno($curl)) { if (curl_errno($curl)) {
$this->reqStatus = 0; $this->reqStatus = 0;
$this->reqMsg = "请求失败,".curl_error($curl); $this->reqMsg = "请求失败,".curl_error($curl);
} }
curl_close($curl); // 关闭CURL会话 curl_close($curl);
return json_decode($tmpInfo); // 返回数据json格式 return json_decode($tmpInfo,true);
} }
} }

Loading…
Cancel
Save