No idea why its not giving you the content-length...I downloaded that file to my server and ran the script that I gave you and it gave me the content-length when I downloaded it with my browser. Here is the output from LiveHTTP Headers:
http:/<someurl>/test.php
GET /test.php HTTP/1.1
Host: <someurl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=73ca6961780a4fe5ca138710fd909d6f
HTTP/1.x 200 OK
Date: Mon, 28 Jul 2008 06:58:30 GMT
Server: Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.8e DAV/2 PHP/5.2.3 with Suhosin-Patch
X-Powered-By: PHP/5.2.3
Content-Description: File Transfer
content-disposition: attachment; filename=test.mp3
Content-Transfer-Encoding: binary
Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Pragma: public
Content-Length: 55844217
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/octet-stream
Looks like you might be using some kind of compression on your server...you have the following headers and I don't:
Vary: Accept-Encoding
Content-Encoding: gzip
Connection: close
Transfer-Encoding: chunked
That might have something to do with it, I dunno...thats all I got. Good luck!