trueblue ma rację, filetype jest tutaj winowajcą. Spróbuj czegoś takiego
Kod
<?php
header('Content-Transfer-Encoding: Binary');
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: '.filesize($file));
readfile($file);
Pisane z głowy, więc mógł wkraść się jakiś błąd.