2016-11-04 298 views
0

我在我的Windows機器中有本地wamp服務器。 在www目錄中我有文件夾稱爲項目。 C:WWW /項目/ index.php文件。從URL URL的PHP​​ curl下載文件

和下一個相同的路徑,我有目錄來保存目標位置c:www/project/downloads。

當我跑我的本地http://localhost:8089/curl/index.php

我有以下這裏連接錯誤,錯誤的圖像。 php curl method download file

這是我的代碼:

 <?php class download { 

    const URL_MAX_LENGTH = 3000; 

    protected function cleanUrl($url) { 
     if(isset($url)){ 
      if(!empty($url)){ 
       if(strlen($url) < self::URL_MAX_LENGTH) { 
        return strip_tags($url); 
       } 
      } 

     } 
    } 

    //is url 
    protected function isUrl($url) { 
    $url = $this->cleanUrl($url); 
    if(isset($url)) { 
     if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)) { 
      return $url; 
     } 
    } 
} 

    protected function returnExtension($url) { 
     if($this->isUrl($url)) { 
      $end = end(preg_split("/[.]+/", $url)); 
      if(isset($end)) { 
       return $end; 
      } 
     } 
    } 

    public function downloadFile($url) { 
     if($this->isUrl($url)) { 
      $extension = $this->returnExtension($url); 
      if($extension) { 
       echo $url; 
       $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
      $return = curl_exec($ch); 

      $destination = "downloads/file.$extension"; 
      $file = fopen($destination, "w+"); 
      fputs($file, $return); 
      } 
      if(fclose($file)){ 
       echo "File Download"; 

      } 

     } 

    } 

    } 


$obj = new Download(); 
if(isset($_POST['url'])) { $url = $_POST['url']; } ?> 

<form action="http://localhost:8089/curl/index.php" method="post"> 

    <input type="text" name="url" maxlength="3000"/> 
    <input type="submit" value="download"/> 

</form> 

<?php if(isset($url)) { $obj->downloadFile($url); } ?> 

,你可以請一些這方面的一個幫助嗎?

非常感謝, 帕拉尼

回答

2

替換下面一行在returnExtension功能

$end = end(preg_split("/[.]+/", $url)); 

$result = preg_split("/[.]+/", $url);  
$end = end($result); 
+0

HI周杰倫,謝謝你的帖子,現在它正在工作文件:) – user6420577

+0

歡迎..... :) –

0

你必須改變這一行:

$end = end(preg_split("/[.]+/", $url)); 

$urlParts = preg_split("/[.]+/", $url); 
$end = end($urlParts); 

這不是一個真正的錯誤,而是一個嚴格的標準通知。 這是因爲php只想通過引用傳遞變量,並且preg_split的返回不是變量。

+0

可以請你說出你的答案與@Jay Gosai不同嗎? –