下载通过url触发的php csv文件
我尝试下载通过URL触发的csv文件。我执行get请求,然后返回结果,但内容只是HTML代码。我没有取回csv文件。如果我打印get请求的结果,那么csv文件开始在浏览器中下载,但我需要在PHP中下载csv文件 有没有办法从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 = "
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代码…我不明白为什么!