假设页面上显示的文件使用标题:
header("Content-Length: " . filesize($file) );
header("Content-type: application/pdf");
header("Content-disposition: inline");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
如何使用curl或file_get_contents或以任何其他方式从外部下载该文件?
我尝试了这个,但它下载了一个空文件:
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url); //specify the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$head = curl_exec($ch);
header('Content-Disposition: attachment; filename="' . basename($url) . '"');
header("Content-Length: " . $url);
header("Content-Type: application/octet-stream");
我尝试使用file_get_contents(),但这可能是错误的方法。
有人可以帮忙吗?
答案 0 :(得分:0)
目前您只使用curl获取标题,而不是实际内容(正文)本身。
当您将其更改为
时curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
你将获取二进制内容(Content-disposition:inline应该没问题)
如果您现在想要为其他用户下载以前提取的文件,只需将其打印出来即可。
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url); //specify the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$body = curl_exec($ch);
header('Content-Disposition: attachment; filename="EXAMPLE_FILE.txt"');
header("Content-Length: " . strlen($body));
header("Content-Type: application/octet-stream");
echo $body;