[PHP] Passing header info for use in downloading files...?
I have a page where the user clicks a link to download a file, but the file is out side of the root DIR. passing certain variables in the link, (type, file_name) I call the correct file... However, it's stopped working? My code below shows how I select the correct mime info to pass to the header.. but I keep getting promted to download an HTML file all the time... if ($type == 'pdf') {$mimeinfo = application/pdf;} else if ($type == 'doc') {$mimeinfo = application/msword;} else if ($type == 'exe') {$mimeinfo = application/octet-stream;} else if ($type == 'ppt') {$mimeinfo = application/vnd.ms-powerpoint;} else if ($type == 'xls') {$mimeinfo = application/vnd.ms-excel;} else if ($type == 'xml') {$mimeinfo = text/xml;} else if ($type == 'zip') {$mimeinfo = application/zip;} header(Content-Disposition: attachment; filename=$file); header(Content-Length: . filesize($path)); header(Content-Type: $mimeinfo); readfile($path); My problem page is: http://www.risk.sungard.com/download/?id=12617 click in the link 'Settlements ' and you'll see what I mean, it says it's a pdf, but when you have to specify the download location, it saves simply the html page? can anyone spot my probably stupid error? Tris... * The information contained in this e-mail message is intended only for the personal and confidential use of the recipient(s) named above. If the reader of this message is not the intended recipient or an agent responsible for delivering it to the intended recipient, you are hereby notified that you have received this document in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail, and delete the original message. ***
Re: [PHP] Passing header info for use in downloading files...?
[EMAIL PROTECTED] wrote: I have a page where the user clicks a link to download a file, but the file is out side of the root DIR. passing certain variables in the link, (type, file_name) I call the correct file... However, it's stopped working? My code below shows how I select the correct mime info to pass to the header.. but I keep getting promted to download an HTML file all the time... if ($type == 'pdf') {$mimeinfo = application/pdf;} else if ($type == 'doc') {$mimeinfo = application/msword;} else if ($type == 'exe') {$mimeinfo = application/octet-stream;} else if ($type == 'ppt') {$mimeinfo = application/vnd.ms-powerpoint;} else if ($type == 'xls') {$mimeinfo = application/vnd.ms-excel;} else if ($type == 'xml') {$mimeinfo = text/xml;} else if ($type == 'zip') {$mimeinfo = application/zip;} Don't know if this is the problem, but I would code this differently... if ($type == 'pdf') { $mimeinfo = application/pdf; } elseif ($type == 'doc') { $mimeinfo = application/msword; } elseif ($type == 'exe') { $mimeinfo = application/octet-stream; } elseif ($type == 'ppt') { $mimeinfo = application/vnd.ms-powerpoint; } elseif ($type == 'xls') { $mimeinfo = application/vnd.ms-excel; } elseif ($type == 'xml') { $mimeinfo = text/xml; } elseif ($type == 'zip') { $mimeinfo = application/zip; } But that's only if I had to use if/elsepersonally, I'd put all that in a switch statement. header(Content-Disposition: attachment; filename=$file); header(Content-Length: . filesize($path)); header(Content-Type: $mimeinfo); And here, again, don't know if it's the problem, but...I'd move the variable outside of the quotes header(Content-Type: . $mimeinfo); Just personal preference I guessYRMV. readfile($path); My problem page is: http://www.risk.sungard.com/download/?id=12617 click in the link 'Settlements ' and you'll see what I mean, it says it's a pdf, but when you have to specify the download location, it saves simply the html page? can anyone spot my probably stupid error? Tris... * The information contained in this e-mail message is intended only for the personal and confidential use of the recipient(s) named above. If the reader of this message is not the intended recipient or an agent responsible for delivering it to the intended recipient, you are hereby notified that you have received this document in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail, and delete the original message. *** -- By-Tor.com It's all about the Rush http://www.by-tor.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Passing header info for use in downloading files...?
Look's correct... you could consider adding Header(Content-transfer-encoding: binary); But I highly doubt that would fix things. It would help much more if you pasted the output by the server... The link you pasted us is not sending any of the headers you set. Maybe you already expired this url... but that surely won't help us in debugging! These are the headers returned by your script... 200 OK Cache-Control: private, no-cache Connection: close Date: Tue, 11 Nov 2003 17:05:43 GMT Pragma: no-cache Server: Apache/1.3.28 (Unix) mod_auth_passthrough/1.8 mod_jk/1.2.0 mod_log_bytes/1.2 mod_bwlimited/1.2 PHP/4.3.3 FrontPage/5.0.2.2634 mod_ssl/2.8.15 OpenSSL/0.9.6bContent-Type: text/html Expires: Mon, 26 Jul 1997 05:00:00 GMT Client-Date: Tue, 11 Nov 2003 17:05:49 GMT Client-Peer: 69.57.134.79:80 Set-Cookie: PHPSESSID=ffa3f76470f259ca96fb630dbbc1307d; path=/ X-Powered-By: PHP/4.3.3 The content returned by your script is HTML not PDF! It start's off with... HTML HEAD TITLESunGard Trading and Risk Systems - Download page/TITLE Here is the example output of a working binary download that we use. See the difference. HEAD http://localhost/dl.php HTTP/1.1 200 OK Date: Tue, 11 Nov 2003 16:58:03 GMT Server: Apache/1.3.27 (Unix) PHP/4.1.2 Content-disposition: attachment; filename=app.exe Content-transfer-encoding: binary Content-length: 208670 Connection: close Content-Type: application/octet-stream There is clearly something else broken with your script and it's not in the part of code you sent us. Not only are the headers not what you set, the file isn't what your passing. Hope this helps. Also, stylistically I would use a switch(..) statement. It lends itself perfectly for the kind of thing you're trying to do... switch($type) { case 'pdf': $mimeinfo = application/pdf; break; case 'doc': $mimeinfo = application/msword; break; default:$mimeinfo = application/octet-stream; } Regards, Erik Osterman http://osterman.com/ -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, November 11, 2003 7:57 AM To: [EMAIL PROTECTED] Subject: [PHP] Passing header info for use in downloading files...? I have a page where the user clicks a link to download a file, but the file is out side of the root DIR. passing certain variables in the link, (type, file_name) I call the correct file... However, it's stopped working? My code below shows how I select the correct mime info to pass to the header.. but I keep getting promted to download an HTML file all the time... if ($type == 'pdf') {$mimeinfo = application/pdf;} else if ($type == 'doc') {$mimeinfo = application/msword;} else if ($type == 'exe') {$mimeinfo = application/octet-stream;} else if ($type == 'ppt') {$mimeinfo = application/vnd.ms-powerpoint;} else if ($type == 'xls') {$mimeinfo = application/vnd.ms-excel;} else if ($type == 'xml') {$mimeinfo = text/xml;} else if ($type == 'zip') {$mimeinfo = application/zip;} header(Content-Disposition: attachment; filename=$file); header(Content-Length: . filesize($path)); header(Content-Type: $mimeinfo); readfile($path); My problem page is: http://www.risk.sungard.com/download/?id=12617 click in the link 'Settlements ' and you'll see what I mean, it says it's a pdf, but when you have to specify the download location, it saves simply the html page? can anyone spot my probably stupid error? Tris... * The information contained in this e-mail message is intended only for the personal and confidential use of the recipient(s) named above. If the reader of this message is not the intended recipient or an agent responsible for delivering it to the intended recipient, you are hereby notified that you have received this document in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail, and delete the original message. *** -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Passing header info for use in downloading files...?
--- Erik Osterman [EMAIL PROTECTED] wrote: Look's correct... you could consider adding Header(Content-transfer-encoding: binary); Because Content-transfer-encoding is not a valid HTTP header, this will have no effect. Content-Encoding and Transfer-Encoding are valid headers, but binary is not a valid value for either of those. See RFC 2616 section 19.4.5 for more information. Hope that helps. Chris = My Blog http://shiflett.org/ HTTP Developer's Handbook http://httphandbook.org/ RAMP Training Courses http://www.nyphp.org/ramp -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Passing header info for use in downloading files...?
Didn't know that it's RFC 1521 specific header and not valid in HTTP. =) Thanks, Erik Osterman http://osterman.com/ -Original Message- From: Chris Shiflett [mailto:[EMAIL PROTECTED] Sent: Tuesday, November 11, 2003 9:21 AM To: Erik Osterman; [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: RE: [PHP] Passing header info for use in downloading files...? --- Erik Osterman [EMAIL PROTECTED] wrote: Look's correct... you could consider adding Header(Content-transfer-encoding: binary); Because Content-transfer-encoding is not a valid HTTP header, this will have no effect. Content-Encoding and Transfer-Encoding are valid headers, but binary is not a valid value for either of those. See RFC 2616 section 19.4.5 for more information. Hope that helps. Chris = My Blog http://shiflett.org/ HTTP Developer's Handbook http://httphandbook.org/ RAMP Training Courses http://www.nyphp.org/ramp -- 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