2016-11-04 3 views
0

У меня есть локальный сервер Wamp на моем компьютере с Windows. Внутри каталога www у меня есть папка, называемая проектом. с: WWW/проект/index.php.php curl скачать файл с url

И следующий же путь, у меня есть каталог для сохранения места назначения c: www/project/downloads.

, когда я был запущен мой Localhost 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 Jay, Спасибо, много вашего сообщения, теперь это рабочий файл :) – user6420577

+0

Добро пожаловать ..... :) –

0

Вы должны изменить эту строку:

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

к

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

это на самом деле не является ошибкой, но строгий стандарт уведомления. Это потому, что php хочет только переменные, переданные по ссылке, а возврат preg_split не является переменной.

+0

Можете ли вы рассказать, как ваш ответ отличается от @Jay Gosai ?? –

Смежные вопросы