He visto un mensaje que trata el tema (en kumbia 0.5) , pero no llega a funcionarme.
Utilizo Spirit 1.0
Mi intención, después de subir archivos a public/files/upload es que el usuario pueda visualizarlo...
*******************
En mi index.html tengo:
echo "<td>".link_to(array("expte/verInforme/$item->memoria/", img_tag('informe.jpg','BORDER: 0','WIDTH: 30')))."</td>";
****************************
en la acción correspondiente:
public function verInforme($url)
{
$this->archivo="files/upload/".$url;
}
***************************
y ejecuto la vista verInforme.phtml (lo he copiado texto de otra función que usé en el pasado fuera de kumbia):
<?php
header ("Content-Disposition: attachment; filename=".$archivo."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($archivo));
readfile($archivo);
?>
******************
el resultado es que intenta descargar el archivo files_upload_ etc... me cambia los '\' por '_'. si pongo otro '\' antes de cada '\' para que me lo respete tampoco lo hace... entonces obtengo dos '__' cada vez.
He intentado hacerlo sin crearme acción ni vista, pero parece que lo necesito.
¿ Qué hago mal?
Muchas gracias de antemano...
Comentarios
<!-- m --><a class="postlink" href="http://paraisolinux.com/subir-imagenes-al-servidor-con-kumbiaphp/">http://paraisolinux.com/subir-imagenes- ... kumbiaphp/</a><!-- m -->
El problema lo tengo para la bajada del mismo... La subida sí me funciona... no obstante, gracias por la respuesta.
He intentado hacerlo con un simple:
echo "<td WIDTH=40>"."<a href=".URL_PATH."files/public/".$item->memoria.">".img_tag('informe.jpg','BORDER: 0','WIDTH: 30' )."</a></td>";
Pero tampoco funciona... en este caso me busca un controller llamado 'Files'.
Suele pasar con los Frameworks, que te facilitan las cosas, pero luego algo sencillo que ya estaba hecho no tienes claro cómo hacerlo...
Te espero... y gracias de nuevo.
gracias...
PRIMERO:
Veo que poniendo la ruta absoluta en el servidor sí me descarga:
en index.phtml:
link_to(array("expte/verInforme/$item->memoria/", img_tag('informe.jpg','BORDER: 0','WIDTH: 30')))
en la acción verInforme() no hago casi nada (pongo la ruta, pues en el campo $item->memoria solo almaceno el nombre del archivo:
public function verInforme($url) ... y lanzo su vista pero sin template:
{
$this->archivo="F:\\xampp\\htdocs\\concierta2app\\public\\files\\upload\\".$url;
$this->render('verInforme', null);
}
y en la vista:
<?php
header ("Content-Disposition: attachment; filename=".$archivo."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($archivo));
readfile($archivo);
?>
Gracias deivinsontejeda ...
Un saludo.
$this->archivo=APP_PATH . "\\public\\files\\upload\\".$url;
aunque con esto tambien debe funcionarte...
$this->archivo=PUBLIC_PATH . "/files/upload/".$url;
El cliente solo entiendes de URL relativas al DocumentRoot, no de rutas absolutas del lado servidor....
incorporarle la funcion de carga y descarga de documentos. ya coloque la
vista donde adjunta el documento, quiero colocar una carpeta donde se
almacenen los documentos y que la ruta donde esta el documento la tenga
la base de datos con la finalidad de colocar un link que descargue el
documento...
modelo:
<?php
Load::lib('adjunto_controller');
class CorrespTbladjunto extends ActiveRecord {
public function GetAdjunto()
{
$id = $_REQUEST['id']; // Obtener el id de una consulta POST o GET
$model = Archivo::model()->findByPk($id); // Trae los datos de un registro especifico del modelo Archivo
$content = $model->archivo; // Sacamos en valor de 'archivo' de la consulta
// header HTML
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream; ");
header("Content-Disposition: attachment; filename=archivo.txt");
header("Content-Transfer-Encoding: binary");
// agregar el contenido
print_r($content);
}
?>
vista para la carga:
<div>
<label>Adjuntar Archivo</label>
<?php echo Form::openMultipart('corresp_tbladjunto.strasunto', $archivo);?>
<?php echo Form::file('archivo');?>
</div>
controlador:
public function descargar {
<?php $ruta = $_GET['ruta'];
$archivo_arr = explode( "/", $ruta );
$archivo = $archivo_arr[count($archivo_arr) - 1];
if( !file_exists( $ruta ) ) {
die( "No existe $ruta" );
}
header( "Content-Disposition: attachment; filename=".$archivo."");
header( "Content-type: application/octet-stream" );
header("Content-Length: ".filesize($ruta)); //header que envia al navegador el tamaño del archivo.
@readfile( $ruta );
}
?>
en que estoy fallando?? soy nueva progamando y les agradezco sus respuesta...