2016-11-02 47 views
0

下面是从url下载文件的脚本。我想要的是多链接,如应该有三个或更多的输入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

你为什么不试试[爆炸](http://php.net/manual/en/function.explode.php)?打破它在新行 – Rohit

+0

请你能解释多一点,因为我是一个新的即时通讯在PHP卷曲(:: – Abdulmanan

回答

0

歇字符串转换成使用\ndelimiter数组,你会得到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($ url)来打印数组,请检查您是否获得正确的URL? – Rohit