bueno, mira dado que tu no puedes mostrar nos codigo te mostrare el mio para que veas lo que yo hago, quiza no estoy entendiendo bien pero bueno, te muestro como es que yo organizo los archivo que subo
Código PHP:
function upload(){
//verifica que el data no venga vacio
if(!empty($this->data)){
/*ATENCION A ESTAS LINEAS
captura el nombre del archivo temporal en la carpeta de apache
*/
$fuente=$this->data['Archivo']['arch']['tmp_name'];
//establece la base de la url donde se almacenara el archivo
$destino="files";
//busca el proyecto correspodiente al archivo en cuestion
$proyecto = $this->Archivo->query("select * from proyectos as Proyecto where id = ".$this->data['Archivo']['proyecto_id']);
if(!empty($proyecto)){
$destino.='/'.$proyecto[0]['Proyecto']['nombre'];
//si lo encuentra verifica que la carpeta contenedora exista
if(file_exists($destino)){
/*
En esta parte completo la url carpeta_destino/Nombre_archivo
reemplaza los %20 por espacios
*/
//si existe, completa la url con el nombre de proyeto y nombre del archivo
$destino.="/".str_replace('%20','_',$this->data['Archivo']['arch']['name']);
}else{
//en caso de no existir el contenedor primero lo crea
mkdir('files/'.$proyecto[0]['Proyecto']['nombre']);
//y completa la url
/*
lo mismo para esto
*/
$destino.="/".str_replace('%20','_',$this->data['Archivo']['arch']['name']);
}
//verifica que el archivo se alla podido copiar
/*
aqui trato de mover los archivos de la carpeta temporal a su
destino final
*/
if(move_uploaded_file($fuente,$destino)){
//contruyo un arreglo con los campos correspondientes a la tabla
$file=array(
"categoria_id"=>$this->data['Archivo']['categoria_id'],
"nombre"=>$this->data['Archivo']['arch']['name'],
"url"=>$destino,
"proyecto_id"=>$this->data['Archivo']['proyecto_id'],
"descripcion"=>$this->data['Archivo']['descripcion']
);
if($this->Archivo->save($file)){
echo "{success:true}";
}else{
echo "{success:false, mensaje:'El archivo no pudo ser registrado'}";
}
}else{
echo "{success:false, mensaje:'El archivo no pudo ser almacenado'}";
}
}else{
echo "{success:false, mensaje:'El proyecto no existe'}";
}
}
exit();
}
yo en este ejemplo utilice cakephp pero las pero las instrucciones que resalto no varian
y para la descarga hago lo siguiente:
Código PHP:
<?php
echo $html->css('site');
echo("<meta http-equiv='refresh' content='5;url=../../".$download[0]['Archivo']['url']."'>");
?>
<div id='header'>
<img src='../../img/logo.png'></img>
<h1>Site Ecosistemas De Negocios</h1>
</div>
<br><br>
<div id='dwnld'>
Si la descarga no se realiza automaticamente en 5 seg.<br>
<!-- NOTA QUE LA URL LA MANEJO RELATIVA ../../ -->
Descargue manualmente aqui<a href='../../<?php echo $download[0]['Archivo']['url'] ?>'><img alt='Descargar' src='/animacion/img/download.png'></img></a>
<br><br><br>
<a href='javascript:window.close()'>Cerrar ventana</a>
</div>
espero te sea util, si no es lo que intentabas hacer espero tu respuesta con mas detalles y asi poder ayudarte