con htaccess puoi prevenire il download diretto (Cerca "htaccess preventing direct download")
Poi puoi inviare file con header() dalle pagine del sito.
Eventualmente non dovrebbero esserci problemi a immagazzinare i file in una cartella che non è nella cartella pubblica del dominio.