diff --git a/application/index/controller/RemoteDownload.php b/application/index/controller/RemoteDownload.php index af749e74..72d9eae5 100644 --- a/application/index/controller/RemoteDownload.php +++ b/application/index/controller/RemoteDownload.php @@ -29,6 +29,19 @@ class RemoteDownload extends Controller{ 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(){ if(!$this->checkPerimission(0)){ return json(['error'=>1,'message'=>'您当前的无用户无法执行此操作']); @@ -36,6 +49,11 @@ class RemoteDownload extends Controller{ $aria2Options = Option::getValues(["aria2"]); $aria2 = new Aria2($aria2Options); $downloadStart = $aria2->addUrl(input("post.url")); + if($aria2->reqStatus){ + $this->insertRecord($aria2,input("post.url")); + }else{ + return json(['error'=>1,'message'=>$aria2->reqMsg]); + } } } \ No newline at end of file diff --git a/application/index/model/Aria2.php b/application/index/model/Aria2.php index d01446e7..c3e5d435 100644 --- a/application/index/model/Aria2.php +++ b/application/index/model/Aria2.php @@ -12,27 +12,36 @@ class Aria2 extends Model{ private $saveOptions; public $reqStatus; public $reqMsg; + public $pathId; + public $pid; public function __construct($options){ $this->authToken = $options["aria2_token"]; $this->apiUrl = rtrim($options["aria2_rpcurl"],"/")."/"; $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){ - //{"params": ["token:123123132",["https://www.baidu.com/img/baidu_jgylogo3.gif"],{"dir":"../"}], "jsonrpc": "2.0", "id": "qer", "method": "aria2.addUri"} + $this->pathId = uniqid(); $reqFileds = [ - "params" => ["token:".$this->authToken,[ - $url,["dir" => $this->savePath], - ]], + "params" => ["token:".$this->authToken, + [$url],["dir" => $this->savePath.$this->pathId], + ], "jsonrpc" => "2.0", - "id" => uniqid(), + "id" => $this->pathId, "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); $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){ @@ -42,13 +51,13 @@ class Aria2 extends Model{ curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_TIMEOUT, 15); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - $tmpInfo = curl_exec($curl); // 执行操作 + $tmpInfo = curl_exec($curl); if (curl_errno($curl)) { $this->reqStatus = 0; $this->reqMsg = "请求失败,".curl_error($curl); } - curl_close($curl); // 关闭CURL会话 - return json_decode($tmpInfo); // 返回数据,json格式 + curl_close($curl); + return json_decode($tmpInfo,true); } }