PHP:强制PDF文件下载

时间:2017-02-07 12:47:23

标签: php html

我正在尝试按下提交下载。 pdf 文件,以下是我的代码

if(mail('myemail@gmail.com', 'Brochure Downloaded ', $string)){ 
            $text= 'Your message recieved, We will contact you shrtly '; 
            $file_url = 'http://www.website.com/brochure.pdf'; 
                header('Content-Type: application/octet-stream');
                header("Content-Transfer-Encoding: Binary"); 
                header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
                readfile($file_url); // do the double-download-dance (dirty but worky)
    }

现在发生的事情是发送电子邮件但是没有下载文件,而是重新加载页面并在屏幕上打印长字符,

需要你的帮助

这就是我得到的enter image description here

2 个答案:

答案 0 :(得分:0)

我已经改变了一些标题。我认为正确的内容类型是application/pdf,并且一些标题不是必需的。

if(mail('myemail@gmail.com', 'Brochure Downloaded ', $string)){ 
  $text= 'Your message recieved, We will contact you shrtly '; 
  $file_url = 'http://www.website.com/brochure.pdf'; 
  header("Content-type:application/pdf");
  header("Content-Disposition:attachment;filename='" . basename($file_url) . "'");
  readfile($file_url); // do the double-download-dance (dirty but worky)
}

您还可以添加内容长度:

header('Content-Length: ' . filesize($file_url));

答案 1 :(得分:0)

检查此代码,如果您要下载任何类型文件,首先需要添加内容类型,如果您想下载图像 标题('Content-Type:image / png');如果是pdf那么 标题(“Content-Type:application / pdf”);等

<?php
if (mail('myemail@gmail.com', 'Brochure Downloaded ', $string)) {
$text = 'Your message recieved, We will contact you shrtly ';
$file_url = 'http://www.website.com/brochure.pdf';
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file_url");
header("Content-Type: application/pdf");
header("Content-Transfer-Encoding: binary");
readfile($file);
}
?>

你可以使用

header('Content-Length: ' . filesize($file_url));

如果您希望有人下载带有其他标题的文件

,则应使用Content-Length