您有语法错误,而不是readfile()@Will 已经提到的问题。
替换这个:
header("Content-Disposition: attachment; filename=$_POST['myname']" .date("m-d-y") . ".pdf");
有了这个(在 周围添加花括号$_POST['myname']):
header("Content-Disposition: attachment; filename={$_POST['myname']}" .date("m-d-y") . ".pdf");
^ ^
编辑:
至于readfile()来自外部 URL,这是 PHP 手册必须说的:
如果启用了fopen 包装器,则 URL 可以用作此函数的文件名。有关如何指定文件名的更多详细信息,请参阅fopen() 。请参阅支持的协议和包装器以获取有关各种包装器具有哪些功能的信息的链接、有关其使用的说明以及有关它们可能提供的任何预定义变量的信息。
这意味着您必须allow_url_fopen在您的服务器中启用,php.ini或者您可以使用 curl 将文件下载到您的服务器上,然后将其提供给您的客户端。
使用 curl 的示例:
<?php
$remote_file_url = 'http://www.ftj.eu/.../3n.pdf';
$downloadedFileName = "your_pdf_file.pdf";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_file_url);
$downloadedFile = fopen($downloadedFileName, 'w+');
curl_setopt($ch, CURLOPT_FILE, $downloadedFile);
curl_exec ($ch);
curl_close ($ch);
fclose($downloadedFile);
readfile($downloadedFileName);
header("Content-Disposition: attachment; filename={$_POST['myname']}" .date("m-d-y") . ".pdf");