我正在尝试通过API,实时开放访问pdf文件,然后将该文件下载到我的服务器。 但是,PDF文件不以“.pdf”扩展名结尾,而是封装在更复杂的URL中: http://aip.scitation.org/doi/pdf/10.1063/1.4996175 Web浏览器只是要求打开或将其保存为PDF文件,而我的脚本无法将其翻译。 如何让我的PHP脚本将此URL识别为PDF文件? 提前致谢。 奥利弗
答案 0 :(得分:1)
你可以这样做:
<a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="sample.pdf" id="pdf_file">Download PDF</a>
如果要在不显示页面上的锚标记的情况下进行自动下载,则可以设置JavaScript或Jquery代码。为此,请将display:none;
设置为锚标记,然后使用jquery触发click
事件,如下所示:
$(document).ready(function(){
$('#pdf_file').trigger('click');
};)
因此,当页面加载时,它将开始下载文件。
如果您想抓取文件并将其存储在服务器上,那么您可以使用以下方法执行此操作:
file_put_contents("sample.pdf",file_get_contents("URL"));
您可以使用绝对路径而不是文件名,您可以将文件存储在服务器的已定义文件夹中。
答案 1 :(得分:0)
目前尚不清楚你到底在做什么以及为什么你的php脚本必须识别pdf。
如果您正在通过php应用程序加载文件 - 您可以检查文件的内容类型标题,其中包含文件类型信息以及扩展名。您可以使用http://php.net/manual/en/book.curl.php库。
如果您想让用户在您的网站上下载该文件,您必须设置正确的内容类型:
header('Content-Type: application/pdf');
现在,即使没有扩展名,浏览器也会知道您提供的文件是pdf。
<强>更新强>
最终证明,带有pdf文件的网站只需要一些cookie,如下所述。
答案 2 :(得分:0)
@Oleg Loginov,你是对的:只需在上下文中添加一个cookie,并通过复制命令很好地上传PDF。
$context = stream_context_create(array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20100101 Firefox/8.0\r\n" .
"Cookie: foo=bar\r\n"
)
));
非常感谢!