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.