来自网址的php curl下载文件

时间:2016-11-04 06:54:02

标签: php curl

我的Windows机器上有本地wamp服务器。 在www目录中,我有一个名为project的文件夹。 C:WWW /项目/ index.php的

下一个相同的路径,我有保存目的地位置的目录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 个答案:

答案 0 :(得分:2)

在returnExtension函数

处替换下面的行
$end = end(preg_split("/[.]+/", $url));

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

答案 1 :(得分:0)

您必须更改此行:

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

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

这不是一个真正的错误,而是一个严格的标准通知。 这是因为php只需要通过引用传递的变量,而preg_split的返回不是变量。