Re: Re: Setting headers for file download

From: Date: Wed, 14 Jun 2006 06:26:09 +0000
Subject: Re: Re: Setting headers for file download
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-237951@lists.php.net to get a copy of this message
I was working on a script that was supposed to generate PDF files on the fly and ran into the same problem as you described. MS IE has always been and will always be (?) a P.I.T.A. when it comes to following standards (I am not really sure if the header application/x-octet-steam is a standrad in order to force a download). I came up with this little helper: <?php $filename = "example.pdf"; $len = filesize ($filename ); if ( ( preg_match('|MSIE ([0-9.]+)|', $agent, $version ) ) || ( preg_match( '|Internet Explorer/([0-9.]+)|', $agent, $version ) ) ) { header( 'Content-Type: application/x-msdownload' ); header( 'Content-Length: ' . $len ); if ( $version == '5.5' ) { header( 'Content-Disposition: filename="' . $filename .. '"' ); } else { header( 'Content-Disposition: attachment; filename="' .. $filename . '"' ); } } else { header( 'Content-Type: application/pdf' ); header( 'Content-Length: ' . $len ); header( 'Content-disposition: attachment; filename=' . $filename ); } echo file_get_contents($filename); ?> All browsers I have tested with do show the download frame (Opera, Safari, IE, Firefox, Mozilla browsers). But, as Richard already mentioned, I had to "fake" the download URL, like "http://www.site.com/downloads/example.pdf". In the folder "downloads" I put a .htaccess file with the line "ErrorDocument 404 /link/to/my/php/script.php". /frank 14 jun 2006 kl. 02.19 skrev Peter Lauri:
I will try that after golf... -----Original Message----- From: Rafael [mailto:rsalazarm@gmail.com] Sent: Wednesday, June 14, 2006 6:28 AM To: php-general@lists.php.net Subject: [PHP] Re: Setting headers for file download I use something like this... $file_len = filesize($file_name); $file_ts = filemtime($file_name); header('Content-Type: application/x-octet-stream'); // none known header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', $file_ts) .' GMT'); header('Content-Disposition: attachment; filename="'. basename($file_name) .'"'); header("Content-Length: $file_len"); readfile($file_name); Peter Lauri wrote:
Best group member, This is how I try to push files to download using headers: header("Content-type: $file_type"); header("Content-Disposition: attachment; filename=$filename"); print $file; It works fine in FireFox, but not that good in IE. I have been googled to find the fix for IE, but I can not find it. Anyone with experience of
this?
Best regards, Peter Lauri
--Atentamente / Sincerely, J. Rafael Salazar Magaña --PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.general (#237951) next »