2016-11-02 9 views
0

URLからファイルをダウンロードするスクリプトです。私が望むのは、ユーザーがリンクを張って、スクリプトがすべてのファイルをダウンロードする3つ以上の入力urlボックスがあるようなマルチリンクです。私はボタンを押したくないし、別のURLボックスが現れる。それは私が望んでいない、私はすでにそれを試みた。または複数のリンク。私たちは各ライン上のリンクを置くことができ、このような何か:このカールスクリプトのマルチリンクを作成するにはヘルプが必要

enter image description here

<?php 
class Download { 
    const URL_MAX_LENGTH=2000; 

    // clean url 
    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; 
        } 
       } 
    } 


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

    // file download 
    public function downloadFile($url){ 
     if ($this->isUrl($url)){ 
     $extension = $this->returnExtension($url); 
     if ($extension){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $return = curl_exec($ch); 
     curl_close($ch); 


     // directory where files should be downloaded 
    $destination = "uploads/file.$extension"; 
     $file = fopen($destination, "w+"); 
     fputs($file, $return); 
     if (fclose($file)) { 
      echo "Successfully Download The File"; 
     } 
     } 
     } 
    } 

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

?> 
<form action="index.php" method="post"> 
<input type="text" name="url" maxlength="2000"> 
<input type="submit" value="Download" /> 
</form> 
<?php if (isset($url)) { $obj->downloadFile($url); }?> 
+0

[explode](http://php.net/manual/en/function.explode.php)を試してみませんか?新しいライン – Rohit

+0

でそれを壊してくださいあなたは私がnewbeの少しPHPのカール(: – Abdulmanan

答えて

0

ブレーク列delimiterとして\nを使用して配列には、あなたは、URLの配列を取得します。以下の例をチェックしてexplodeを使用してください。

注:使用<textarea>、あなたがinputを使用してenterを押すと、フォームが提出されます。

<form action="" method="post"> 
<textarea type="text" name="url" maxlength="2000"></textarea> 
<input type="submit" value="Download" /> 
</form> 

<?php 
if(isset($_POST['url'])){ 
    $urls = explode("\n",$_POST['url']); 
} 
foreach ($urls as $url) { 
    echo $url; 
    //$obj->downloadFile($url); 
} 
?> 
+0

ちょっと私はスクリプトの少しの問題を抱えているファイル名は、その唯一のfile.extensionと来ていない – Abdulmanan

+0

また、すべてのファイルのファイルサイズは0kbです。 – Abdulmanan

+0

'print_r($ urls)'を使って配列を印刷しようとすると、正しいURLが得られていますか? – Rohit

関連する問題