【发布时间】:2012-12-26 07:02:47
【问题描述】:
我正在构建一个脚本,将 imap 放入谷歌邮箱,获取一条消息,并从正文中提取一个链接。该链接在通过 php 打开时会启动从外部源下载 PDF 文件的过程。
这是我需要做的:
- 以编程方式打开启动下载的链接
- 下载 PDF,显然绕过任何对话框
- 将 PDF 文件存储到 Web 服务器上的本地文件夹中
我已经成功启动下载过程并下载文件。但是,每次打开 PDF 的尝试都会发现文件已损坏,我不知道为什么。这就是我现在正在尝试的。以下内容基于类似主题。
$filename = http://cckk.ca/KE645R26/geico.com_SEO_Domain_Dashboard_20121101_00.pdf
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_clean();
flush();
readfile($filename);
exit;
我在想我传递的文件名可能有问题?
注意:此脚本将设置为每隔几秒在服务器上运行的 CRON 任务,以便不断从我们自己的邮箱中获取,因此不会有任何类型用户交互或对用户构成安全风险。
【问题讨论】:
-
让我编辑脚本目的来澄清这个问题...
-
对不起,现在很清楚你想要做什么。我起初以为本地,你的意思是本地人通过浏览器的硬盘,但我现在看到你说的是网络服务器。我认为你应该看看 PHP 的 curl 函数来获取远程文件。
-
但是从我所看到的一切来看,示例使用 Content Headers 来获取文件,或者我的应用程序不是出于同样的目的?
-
使用内容标题将文件输出到浏览器(或其他为该内容类型发出请求的东西)。如果你只是获取一个远程文件,然后在本地写入,则不需要发送任何标题。
-
@crush 是的,但他确实需要
header('Content-Disposition: attachment; ...来提示下载。
标签: php pdf download mime-types