首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php curl从url下载文件

php curl从url下载文件
EN

Stack Overflow用户
提问于 2016-11-04 14:54:02
回答 2查看 526关注 0票数 0

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

和下一个相同的路径,我有一个目录来保存目标位置c:www/project/downloads。

当我运行本地主机http://localhost:8089/curl/index.php

我有以下错误,错误图像附在这里。

这是我的代码:

代码语言:javascript
复制
      <?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); } ?>

你能找个人帮个忙吗?

非常感谢,帕拉尼

EN

回答 2

Stack Overflow用户

发布于 2016-11-04 15:30:28

替换returnExtension函数中的以下行

代码语言:javascript
复制
$end = end(preg_split("/[.]+/", $url));

使用

代码语言:javascript
复制
$result = preg_split("/[.]+/", $url);       
$end = end($result);
票数 2
EN

Stack Overflow用户

发布于 2016-11-04 15:34:51

您必须更改此行:

代码语言:javascript
复制
$end = end(preg_split("/[.]+/", $url));

代码语言:javascript
复制
$urlParts = preg_split("/[.]+/", $url);
$end = end($urlParts);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40416923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档