PHP - 从链接下载pdf文件并保存在本地文件夹中

时间:2017-10-27 06:42:05

标签: php pdf

我正在尝试通过API,实时开放访问pdf文件,然后将该文件下载到我的服务器。 但是,PDF文件不以“.pdf”扩展名结尾,而是封装在更复杂的URL中: http://aip.scitation.org/doi/pdf/10.1063/1.4996175 Web浏览器只是要求打开或将其保存为PDF文件,而我的脚本无法将其翻译。 如何让我的PHP脚本将此URL识别为PDF文件? 提前致谢。 奥利弗

3 个答案:

答案 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"
  )
));

非常感谢!