yo tenia el mismo problema que tu pero con pdfs. Lo soluciones gracias al htacces de apache. puse lo siguiente
Código:
<FilesMatch "\.pdf$">
Order allow,deny
Deny from all
Allow from localhost
</FilesMatch>
Con eso obtenia que a los pdf de ese directorio solo se podia acceder desde localhost. Cuando queria un archivo, lo pasaba por un script que me validaba al usuario, y en caso de tener permiso para ver el archivo leia los contenidos de ese archivo, y mediante la funcion header le especificaba al navegador que tipo de documento le iba a mandar. Te pongo el codigo donde leo el fichero y hago lo de header (lo demas va a gusto de cada uno)
Código PHP:
$fichero = file_get_contents("../../uploads/$documento->nombre");
header('Content-type: application/pdf');
echo $fichero;
El problema es que solo sirve para un tipo de archivo, no para todos, pero bueno, como solo lo necesitaba para pdfs me sirvio, espero que a ti tambien te sirva...
Un saludo