1

我正在构建一个脚本,将 imap 放入谷歌邮箱,获取一条消息,并从正文中提取一个链接。该链接通过 php 打开时,会启动从外部源下载 PDF 文件的过程。

这是我需要做的:

  1. 以编程方式打开启动下载的链接
  2. 下载 PDF,显然绕过任何对话框
  3. 将 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 任务,以便不断从我们自己的邮箱中获取,因此这不会有任何类型的用户交互或对一个安全风险用户。

4

2 回答 2

5

尝试:

$filename = 'http://cckk.ca/KE645R26/geico.com_SEO_Domain_Dashboard_20121101_00.pdf';

file_put_contents(
    '/your/server/path/folder/' . basename($filename), // where to save file
    file_get_contents($filename)
);

exit;
于 2013-01-11T16:37:07.397 回答
2

您不能在远程文件上使用 filesize()。最有可能的是,该调用的错误出现在文件的开头,从而损坏了它。

于 2013-01-11T16:40:10.750 回答