La respuesta es obvia:
1. Subes el archivo, el cual se guarda en una carpeta específica en el host.
2. Tomas el nombre del archivo y lo guardas en la base de datos, en un campo de una tabla, con toda la dirección de la carpeta o no.
3. Cuando deseas mostrarlos, el sistema lee el nombre del archivo y lo adjunta a la dirección de la carpeta, creando un link, que es el que se muestra en realidad.
4. SI deseas descargarlo, adjuntas el nbombre del archivo con su dirección en un link de descarga y permites que el usuario lo pueda bajar.
¿QUÉ ES LO QUE NO ENTIENDES?
Un sistema seguro NO PUEDE PERMITIR que un usuario copie directamente un archivo. TIENES QUE CREAR UN RECURSO EN UNA APLICACIÓN para hacerlo. A menos que quieras, claro, que cualquiera pueda poner, sacar o destruir cualquier cosa en tu servidor.
Pero eso es tu derecho a suicidarte...