Temelde Tüm yapmanız gereken Content-Disposition
header to attachment
'Farklı Kaydet' diyalog almak için ayarlamaktır. İşte başlama PHP örnek:
<?php
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="foo.pdf"');
readfile('/path/to/foo.pdf');
?>
Yapamazsın ve JavaScript ile bunu yapmak istemiyorum.
Önemli not: nedeniyle kötü özelliği, MSIE 'Farklı Kaydet' diyalog varsayılan dosya adı content-disposition
başlığındaki elde olmayacak, bunun yerine istek URL pathinfo son parçası olacak . Geçici çözüm için bu, örneğin, bağlantı PDF dosya ekleme http://example.com/pdf/foo.pdf
. Hatta okumak için PHP bunun yararlanabilir pathinfo belirtilen PDF dosyasında. Burada temel bir örnek pdf.php
:
<?php
$file_name = $_SERVER['PATH_INFO'];
$file = '/path/to/pdf/files' . $file_name;
if (file_exists($file)) {
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="' . basename($file_name) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
} else {
header('HTTP/1.1 404 Not Found');
}
?>
Ancak bu size ettik MultiViews
üzerine böylece /pdf/
Bu PHP dosyası geçmesi, ya da en az, bir RewriteRule
den /pdf/
varsayar için /pdf.php/
.
Bu yaklaşımın en önemli avantajı, yeni bir PDF dosyası eklemek veya PDF dosya adını değiştirmek istediğiniz zaman kodunu değiştirmenize gerek kalmamasıdır.
Hatta otomatik olarak belirlenmesi ve doğru içerik türünü ayarlayarak daha genel yapabilirsiniz:
<?php
$file_name = $_SERVER['PATH_INFO'];
$file = '/path/to/all/files' . $file_name;
if (file_exists($file)) {
header('Content-Type: ' . mime_content_type($file_name));
header('Content-Disposition: attachment;filename="' . basename($file_name) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
} else {
header('HTTP/1.1 404 Not Found');
}
?>
files.php
ya da öylesine ve o zaman http://example.com/files/foo.pdf
, http://example.com/files/bar.zip
, vs Örneğin erişebileceğiniz bir genel PHP downloader var adlandırın.
Umarım bu yardımcı olur.