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

PHP-从链接下载pdf文件并保存在本地文件夹中,php,pdf,Php,Pdf,我试图通过一个API,一个live open access pdf文件,然后将该文件下载到我的服务器。 但是,PDF文件不以“.PDF”扩展名结尾,而是封装在更复杂的url中: web浏览器只需请求将其打开或保存为PDF文件,而我的脚本无法将其转换为PDF文件。 如何使我的PHP脚本将此url识别为PDF文件? 提前谢谢。 奥利维尔你可以这样做: <a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="s

我试图通过一个API,一个live open access pdf文件,然后将该文件下载到我的服务器。 但是,PDF文件不以“.PDF”扩展名结尾,而是封装在更复杂的url中: web浏览器只需请求将其打开或保存为PDF文件,而我的脚本无法将其转换为PDF文件。 如何使我的PHP脚本将此url识别为PDF文件? 提前谢谢。 奥利维尔

你可以这样做:

<a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="sample.pdf" id="pdf_file">Download PDF</a>
$(document).ready(function(){
    $('#pdf_file').trigger('click');
};)
header('Content-Type: application/pdf');
因此,当页面加载时,它将开始下载文件

如果要获取文件并将其存储在服务器上,则可以使用以下方法:

file_put_contents("sample.pdf",file_get_contents("URL"));
您可以使用绝对路径,而只使用文件名,这样您就可以将文件存储在服务器的已定义文件夹中。

您可以这样做:

<a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="sample.pdf" id="pdf_file">Download PDF</a>
$(document).ready(function(){
    $('#pdf_file').trigger('click');
};)
header('Content-Type: application/pdf');
因此,当页面加载时,它将开始下载文件

如果要获取文件并将其存储在服务器上,则可以使用以下方法:

file_put_contents("sample.pdf",file_get_contents("URL"));

您可以使用绝对路径,而只使用文件名,您将获得存储在服务器定义文件夹中的文件。

不清楚您到底在做什么,以及您的php脚本为什么必须识别pdf

如果您是通过php应用程序加载文件,您可以检查文件的内容类型头,其中包含文件类型信息和扩展名。你们可以用图书馆来做

如果您想让用户在您的网站上下载该文件,您必须设置正确的内容类型,如下所示:

<a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="sample.pdf" id="pdf_file">Download PDF</a>
$(document).ready(function(){
    $('#pdf_file').trigger('click');
};)
header('Content-Type: application/pdf');
现在,浏览器将知道您提供的文件是pdf格式的,即使没有扩展名

更新


最终发现,包含pdf文件的站点只需要一些cookie,如下所述。

不清楚您到底在做什么,以及为什么您的php脚本必须识别pdf

如果您是通过php应用程序加载文件,您可以检查文件的内容类型头,其中包含文件类型信息和扩展名。你们可以用图书馆来做

如果您想让用户在您的网站上下载该文件,您必须设置正确的内容类型,如下所示:

<a href="http://aip.scitation.org/doi/pdf/10.1063/1.4996175" download="sample.pdf" id="pdf_file">Download PDF</a>
$(document).ready(function(){
    $('#pdf_file').trigger('click');
};)
header('Content-Type: application/pdf');
现在,浏览器将知道您提供的文件是pdf格式的,即使没有扩展名

更新


最终发现,带有pdf文件的站点只需要一些cookie,如下所述。

@Oleg Loginov,你是对的:只需在上下文中添加cookie,pdf就可以通过copy命令上传

$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"
  )
));

非常感谢

@Oleg Loginov,你说得对:只要在上下文中添加一个cookie,PDF就可以通过copy命令上传

$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"
  )
));


非常感谢

您正在尝试从野外下载到服务器吗?如果是这样的话,你有没有试着简单地卷曲它?甚至
文件内容(“file.pdf”,文件内容(“URL”)
应该可以工作,但肯定不是我推荐的。我尝试使用Curl,但问题是URL本身不包含任何内容:正是此URL的调用导致您尝试从野外下载到服务器的PDFare的格式?如果是这样的话,你有没有试着简单地卷曲它?甚至
文件内容(“file.pdf”,文件内容(“URL”)
应该可以工作,但肯定不是我推荐的。我尝试使用Curl,但问题是URL本身不包含任何内容:正是此URL的调用导致了PDFThanks的格式设置,以供您回复。我试过了,但是下载没有开始。此外,我想要的是我的服务器接收下载,就好像它使用PHP函数“copy”@OTroccaz一样,我现在已经更新了我的答案。看一看。我测试过:我没有恢复PDF,但是恢复了一个类似网站搜索引擎的页面的html代码。谢谢你的回复。我试过了,但是下载没有开始。此外,我想要的是我的服务器接收下载,就好像它使用PHP函数“copy”@OTroccaz一样,我现在已经更新了我的答案。看一看。我测试过:我没有恢复PDF,但html代码的网页类似于搜索引擎的网站谢谢你的答复。它必须识别它才能将其保存在专用文件夹中。对于扩展名为PDF的文件,我使用“复制”功能,一切正常。我不希望用户保存文件,这不是目标。你能提供一行代码来澄清问题吗?比如copy('http://aip.scitation.org/doi/pdf/10.1063/1.4996175','/somefile.pdf');下面是代码部分:
code
if($urlpf!=”)//PDF URL,使用第一个方法找到{if(!copy($urlpf'../PDF/'.$titPDF'.PDF',$context)){//echo('cannot copy file');}else{//echo(mime_内容类型('./PDF/'.$titPDF'.PDF')。
);if(mime_内容类型('.$titPDF/'.$titPDF'.PDF')!=“application/PDF')!”{//删除文件取消链接('./PDF/'.$titPDF..PDF');}
code
当我尝试自己复制文件时,在下载的副本中我发现:。可能这就是问题所在。您必须传递一些cookie才能获得正确的文件。感谢您的回复。它必须能够识别该文件才能将其保存在专用文件夹中。对于具有PDF扩展名的文件,我使用“复制”功能,一切都正常s、 我不想让用户保存文件,这不是目标。你能提供一行代码来澄清问题吗?比如copy('http://aip.scitation.org/doi/pdf/10.1063/1.4996175','./somefile.pdf');下面是代码部分:
code
if($urlpf!=“”)//用第一个方法找到的pdf URL{if(!copy($urlPDF,./PDF/'.$titPDF..PDF',$context)){//echo(“无法复制文件”);}其他{//echo(mime_内容类型('../PDF/'.$titPDF..PDF')。
';if(mime_内容类型('../PDF/'.$titPDF..PDF')!=“application/PDF”){//删除未链接的文件('../PDF/'.$titPDF..PDF');}}
code
当我尝试自己复制文件时,在下载的副本中我发现:.Pr