Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载通过url触发的php csv文件_Php_Curl - Fatal编程技术网

下载通过url触发的php csv文件

下载通过url触发的php csv文件,php,curl,Php,Curl,我尝试下载通过URL触发的csv文件。我执行get请求,然后返回结果,但内容只是HTML代码。我没有取回csv文件。如果我打印get请求的结果,那么csv文件开始在浏览器中下载,但我需要在PHP中下载csv文件 有没有办法从PHP中下载csv文件?任何帮助都将不胜感激。下面是到目前为止我的代码 获取请求 require_once('hhb_.inc.php'); $hc = new hhb_curl('', true); $output_filename = "

我尝试下载通过URL触发的csv文件。我执行get请求,然后返回结果,但内容只是HTML代码。我没有取回csv文件。如果我打印get请求的结果,那么csv文件开始在浏览器中下载,但我需要在PHP中下载csv文件

有没有办法从PHP中下载csv文件?任何帮助都将不胜感激。下面是到目前为止我的代码

获取请求

require_once('hhb_.inc.php');
    $hc = new hhb_curl('', true);

            $output_filename = "hotProduct_Laptop_Parts.csv";
                $fp = fopen($output_filename, 'w+');
                set_time_limit(0); // unlimited max execution time
                $contents=$hc->setopt_array(array(
                  CURLOPT_FILE    => $fp,
                  CURLOPT_RETURNTRANSFER => 1,
                  CURLOPT_FOLLOWLOCATION=> true,
                  CURLOPT_TIMEOUT =>  28800, // set this to 8 hours so we dont timeout on big files
                  CURLOPT_URL     => 'https://portals.aliexpress.com/adcenter/hot_product_download.do?categoryId=200001083&categoryName=Laptop%20Parts%20&%20Accessories',
                  CURLOPT_HTTPHEADER => array(
                      'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                      'Referer: https://portals.aliexpress.com/adcenter/hotProductRecommend.htm?categoryId=7',
                      'accept-language: en-US,en;q=0.5',
                      'accept-encoding: gzip, deflate, br',
                      'upgrade-insecure-requests:   1',
                      'te:  trailers',
                      'authority:   portals.aliexpress.com'
                       ,

                  )
                )
                )->exec()->getStdOut();

        print_r($contents);


            // the following lines write the contents to a file in the same directory (provided permissions etc)

            fwrite($fp, $contents);
            fclose($fp);

你的标题设置正确了吗

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

您需要在php文件顶部指定它们

您是否正确设置了标题

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

您需要在php文件顶部指定它们,然后才能下载该文件。如果您试图在未登录的浏览器中查看该URL,您将首先看到的是登录页面!页面基本上是说“先登录”

您没有发布重现问题所需的代码,因为您没有发布重现问题所需的URL。我投票决定结束这个问题,因为我无法复制它


您的问题几乎可以肯定,您需要在下载文件之前获得cookie(这很常见),但由于您没有共享您试图下载的url,因此我无法验证这一理论。在您共享有问题的url之前,我们无法提供帮助。

您需要先登录,并拥有有效的登录cookie,然后才能下载该文件。如果您试图在未登录的浏览器中查看该URL,您将首先看到的是登录页面!页面基本上是说“先登录”

您没有发布重现问题所需的代码,因为您没有发布重现问题所需的URL。我投票决定结束这个问题,因为我无法复制它


您的问题几乎可以肯定,您需要在下载文件之前获得cookie(这很常见),但由于您没有共享您试图下载的url,因此我无法验证这一理论。在您共享有问题的url之前,我们无法提供帮助。

您确定返回的页面没有运行触发实际下载的javascript吗?一般来说,您应该使用fopen模式
w+b
,而不是
w+
。(Windows OSs在默认的
t
模式下做了可怕的事情,MacOS@FedericoklezCulloca也做了同样的事情。我得到了这个html代码。它包括javascript。你确定返回的页面没有运行触发实际下载的javascript吗?你可能应该使用fopen模式
w+b
,而不是
w+/code>,作为一般经验法则。(Windows OSs在默认的
t
模式下做了可怕的事情,MacOS@FedericoklezCulloca也做过同样的事情。我得到了这段html代码。它包括javascriptOk。我已经共享了url!我正确登录并得到了正确的响应。我尝试加载另一个页面并出现了。但是当我尝试加载这个特定的pa时ge我找回了这个html代码…我不明白为什么!好吧,我已经共享了url!我正确登录并得到了正确的响应。我尝试加载另一个页面并出现了。但是当我尝试加载这个特定页面时,我找回了这个html代码…我不明白为什么!