subir archivos

86 views
Skip to first unread message

hernán guzman

unread,
May 12, 2015, 9:14:57 AM5/12/15
to kum...@googlegroups.com
buen dia amigo ayer e trabajado en un codigo para subir imagenes pero despues de tanto luchar logre que subiera la imagen pero tengo el siguiente error no me coloca la extencion como podria solucionarlo
de ante mano muchas gracias aca el codigo

public function editar($id)
{
View::select('cargarPrensa');
$prensa = new Prensa();
//$this->prensa = $prensa->find($id);
$prensa=$prensa->find((int)$id);
if(Input::hasPost('prensa')){
echo "hola0";
$archivos = Upload::factory('archivo');
$archivos->setExtensions(array('jpg', 'png', 'gif','pdf'));
//$archivos->setMaxSize('100M');
echo "hola1";
//echo $archivo;
if ($archivos->isUploaded()) {
echo "hola2";
if ($name = $archivos->saveRandom()) {
echo "hola";
$path = PUBLIC_PATH . 'files/upload/' . $name;
$prensa->archivo=$path;

if (!$prensa->update(Input::Post('prensa'))) {
Flash::error('Falló Operación');
} else {
Flash::valid('Operación Realizada con Exito');
//enrutando por defecto al index del controller
return Router::redirect();
}
}
}
} else {
//Aplicando la autocarga de objeto, para comenzar la edición
$this->prensa = $prensa->find((int)$id);
}

}


--
>>> Ing. Hernan j. Guzman  <<<

Oscar Cid

unread,
May 12, 2015, 9:25:00 AM5/12/15
to kum...@googlegroups.com
estimado, el SaveRandom guarda el archivo con un nombre aleatorio, sin usar extensión, supongo que la idea es que al descargarlo lo renombres con el nombre y la extension que guardaste en la BD.

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

hernán guzman

unread,
May 12, 2015, 10:19:24 AM5/12/15
to kum...@googlegroups.com
no amigo el método saverandom deveria colocar la extencion por que si no la guarda el archivo con extencion igual y no abriría el archivo el método esta errado e acá una solución

public function save($name = NULL)
    {
        if($this->isUploaded()) {     
            if(!$name) {
                $name = $_FILES[$this->_name]['name'];
            }
 
            // Guarda el archivo
            if($this->_beforeSave($name) !== FALSE && $this->_validates() && $this->_saveFile($name)) {
                $this->_afterSave($name);
                return TRUE;
            }
        }
         
        return FALSE;
    }
     
    /**
     * Guarda el archivo con un nombre aleatorio
     * 
     * @return string | boolean nombre de archivo generado o FALSE si falla
     */
    public function saveRandom()
    {
        // Genera el nombre de archivo
        $name = md5(time());
        //solucion de falta de ext en archivos random
        $ext = substr(strrchr($_FILES[$this->_name]['name'], '.'), 1);
        $name=$name.".".$ext;
        //fin de solucion
 
        // Guarda el archivo
        if($this->save($name)) {
            return $name;
        }
         
        return FALSE;
    }

el metodo arbitrariamente renombra pero no coloca la ext y de igual manera llama a sabe

yomatthias

unread,
May 19, 2015, 6:56:46 PM5/19/15
to kum...@googlegroups.com
No te guarda el nombre por que, no estas guardando la variable que devuelve randow al hacer el update, guardas el valor de prense en el momento que se envio.

yomatthias

unread,
May 19, 2015, 7:04:51 PM5/19/15
to kum...@googlegroups.com
Mira te subo un ejemplo de como lo hice yo (este tambien de la imagen anterior con un nuevo nombre; para ser borrada en otro momento)
Fijate que trabaja con la clase no con el post:       
if ($foto->isUploaded()) {
                    if(file_exists("img/upload/".$ascFoto))
                   {          
                      if( rename("img/upload/".$ascFoto, "img/upload/tmp_".$asc->id."_".$ascFoto) ){
                        Flash::info("Se actualizo la foto del asociado");
                      }else Flash::warning('Error al intentar subir su nueva foto');
                    }
                       $asc->ascFoto= $foto->saveRandom();       
                     if ($asc->ascFoto AND $asc->update())
                     Flash::success("Foto subida correctamente");                  
                          
                }

El martes, 12 de mayo de 2015, 10:14:57 (UTC-3), Elmudo escribió:

hernán guzman

unread,
May 20, 2015, 9:17:21 AM5/20/15
to kum...@googlegroups.com
amigo  el problema esta es que el método saveRandom si guarda el archivo ese no es el error eso funciona correctamente el error esta en que no posee la extencion y de ninguna forma lo va hacer puesto que esta mal diseñado

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

hernán guzman

unread,
May 20, 2015, 9:20:23 AM5/20/15
to kum...@googlegroups.com
vean el metodo saverandom de kumbia no mio


/**
     * Guarda el archivo con un nombre aleatorio
     * 
     * @return string | boolean nombre de archivo generado o FALSE si falla
     */
    public function saveRandom()
    {
        // Genera el nombre de archivo
        $name = md5(time());
        //solucion de falta de ext en archivos random
        $ext = substr(strrchr($_FILES[$this->_name]['name'], '.'), 1);
        $name=$name.".".$ext;
        //fin de solucion
 
        // Guarda el archivo
        if($this->save($name)) {
            return $name;
        }
         
        return FALSE;
    }

si ven este metodo el genera un nombre usando el md5() pero solo genera el nombre nunca le coloca la extencion e ay el error

Govani

unread,
May 21, 2015, 1:49:11 AM5/21/15
to kum...@googlegroups.com

hernán guzman

unread,
May 21, 2015, 9:54:02 AM5/21/15
to kum...@googlegroups.com
ya e visto esos manuales de echo si revisas e resuelto ya mi problema tal como digo aca el motodo save funciona perfectamente no ay problema en el el error esta en el metodo saverandom() el cual carga el archivo sin extencion y bueno arriba explico como resolverlo para que lo tengan en cuenta a futuro los que lo usen

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages