Subir imagen

3 views
Skip to first unread message

shadow

unread,
Jun 11, 2009, 8:50:06 PM6/11/09
to Yupp Framework PHP
Saludos

alguien sabe como puedo obtener la ruta completa de un input tipo
file.

ya que la necesito para subir el archivo al servidor.


Este es el codigo que tengo en el controller para crear una nueva
entrada en la tabla, subir el archivo y crear la relacion de la
entrada con el archivo

public function crearAction()
{
if($this->logedAction()!==true)
return $this->redirect(array('controller'=>'usuario',
'action'=>'login'));
if ( array_key_exists('doit', $this->params) )
{
//print_r($this->params);
if ( $this->params['nombre'] === "" )
{
return "Faltan colocar el nombre";
}
$count = Empresa::count()+1;
$empresa = new Empresa( array (
"nombre" => $this->params["nombre"],
"logo" => $this->crearlogoAction($this->params["logo"],$count),
"giro" => $this->params["giro"],
"descripcion" => $this->params["descripcion"]
));
if ( !$empresa->save() )
{
Logger::struct( $empresa->getErrors() );
}
return $this->redirect( array("action" => "catalogo") );
}
}

public function crearlogoAction($archivo,$nombre)
{
$pos = strrpos($archivo,".");
$type = substr($archivo,$pos,strlen($archivo) );
$nuevo_nombre = $nombre.$type;
move_uploaded_file($archivo, "../../img/logos/".$nuevo_nombre);
return $nuevo_nombre;
}

saludos

pablopazos

unread,
Jun 12, 2009, 4:05:06 PM6/12/09
to Yupp Framework PHP
Buenas, el tema de los archivos lo tenía pendiente.

Hoy hice el arreglo para que pudieras acceder a los archivos mediante
$this->params['archivo'].
La clase que modifiqué es core.routing.Filter.class.php, y es el
siguiente código el que cambió:

public function getParams()
{
$tempArr = array();
if ($this->urlParams !== NULL && count($this->urlParams)>0) //
Merge de POST, GET y urlParams.
{
$tempArr = array_merge( $this->urlParams, $_GET);
//return array_merge( $_POST, $tempArr);
$tempArr = array_merge( $_POST, $tempArr);
return array_merge( $_FILES, $tempArr);
}

//return array_merge( $_POST, $_GET ); // Solo merge de POST y
GET.
$tempArr = array_merge( $_POST, $_GET);
return array_merge( $_FILES, $tempArr);
}

La última versión está en el SVN del grupo google:
http://code.google.com/p/yupp/source/browse/#svn/YuppPHPFramework/core/routing


Cualquier problema, luego me cuentas.


Saludos,
Pablo.

shadow

unread,
Jun 12, 2009, 6:10:50 PM6/12/09
to Yupp Framework PHP
por cierto acabo de cambiar la version de yupp por la mas reciente
cambie unicamente la carpeta core y el archivo index.php al ejecutar
la pagina me muestra un error el cual dice que no existe
login.view.php el mensaje es este:

Mensaje:
La vista con path: 'components/gac/views/usuario//usuario/
login.view.php' no existe. VERIFIQUE EN EL CONTROLLER QUE LA VISTA QUE
QUIERE MOSTRAR EXISTE. C:\xampp\htdocs\GAC\core\web
\core.web.RequestManager.class.php 302 [C:\xampp\htdocs\GAC\core\web
\core.web.RequestManager.class.php : 302]

Traza:
#0 C:\xampp\htdocs\GAC\core\web\core.web.RequestManager.class.php
(182): RequestManager::render(Array, Object(ViewCommand), Object
(YuppContext), Object(Filter))
#1 C:\xampp\htdocs\GAC\index.php(96): RequestManager::doRequest()
#2 {main}

cual seria el problema?

saludos

pablopazos

unread,
Jun 12, 2009, 6:27:43 PM6/12/09
to Yupp Framework PHP
Buenas,

Si descargaste el ZIP de la versión 0.1.6.4 este no tendrá la
corrección que te comentaba antes, está solo en el SVN (servidor de
versiones), y si será parte de la próxima versión.


Fíjate cómo indican tus controladores que se debe mostrar una vista,
ya que esto cambió en las últimas versiones.

Por ejemplo, en el EntrabaBlogController:

Lo que antes era: return $this->render("entradaBlog/list", &$this-
>params);

Ahora es: return $this->render("list");


Fíjate que te está buscando la vista en: components/gac/views/usuario//
usuario/login.view.php

Seguramente tienes algo así: return $this->render("usuario/login");


Avísame si es otra cosa.


Saludos,
Pablo.

shadow

unread,
Jun 12, 2009, 6:55:56 PM6/12/09
to Yupp Framework PHP
si lo tenia asi: return $this->render("usuario/login");

ya hice el cambio a return $this->render("login");

y la pagina funciono muy bien muchas gracias por ayudarme...

por cierto un detalle:

tengo abierta la pagina web que estoy haciendo "http://localhost/GAC"
e intento abrir otra pagina "http://localhost/prueba" donde tambien
tengo el instalado yupp y muestra el siguiente error:

Fatal error: Uncaught exception 'Exception' with message
'YuppLoader::refresh() - ruta de inclusion errada (./components/gac/
model//gac.model.Acceso.class.php)' in C:\xampp\htdocs\prueba\core
\core.YuppLoader.class.php:433 Stack trace: #0 C:\xampp\htdocs\prueba
\core\core.YuppLoader.class.php(216): YuppLoader::refresh() #1 C:\xampp
\htdocs\prueba\core\core.YuppLoader.class.php(115): YuppLoader-
>_loadModel() #2 C:\xampp\htdocs\prueba\index.php(80):
YuppLoader::loadModel() #3 {main} thrown in C:\xampp\htdocs\prueba\core
\core.YuppLoader.class.php on line 433

y cuando libero la memoria y abro la pagina "http://localhost/prueba"
la muestra normal y cuando abro "http://localhost/GAC" me vuelve a
mostrar el error.

pablopazos

unread,
Jun 12, 2009, 7:09:13 PM6/12/09
to Yupp Framework PHP
Eso es debido al mecanismo de caching de Yupp.

Lo que te pasa en ese caso es que como hay archivos en el cache que se
guarda en la session, y como si tienes 2 pestañas del navegador
abiertas, comparten la session, hay archivos en el cache de uno de
los Yupps que no estan físicamente en el otro, y al querer
recargarlos, falla.

Fíjate que si abres 2 browsers distintos no pasa el problema. Tampoco
pasaría si se deshabilita el cache.

La idea de Yupp es hacer una sola instalación a la cual se le puedan
agregar muchos componentes. Si hay algún caso donde se necesite
realmente hacer 2 o más instalaciones simultáneas, ahí deberíamos
revisar el mecanismo de caching.


Saludos.

shadow

unread,
Jun 16, 2009, 12:49:51 PM6/16/09
to Yupp Framework PHP
ya implemente el codigo para subir archivos pero tengo algunos
problemillas me muestra el siguiente error

mensaje:
move_uploaded_file(../../img/logos/GAC.png) [function.move-uploaded-
file]: failed to open stream: No such file or directory [C:\xampp
\htdocs\GAC\index.php : 20]

Traza:
#0 C:\xampp\htdocs\GAC\components\gac\controllers
\components.gac.controllers.EmpresaController.class.php(121):
my_warning_handler(2, 'move_uploaded_f...', 'C:\xampp\htdocs...', 121,
Array)
#1 C:\xampp\htdocs\GAC\components\gac\controllers
\components.gac.controllers.EmpresaController.class.php(61):
EmpresaController->crearlogoAction('C:\xampp\tmp\ph...', '../../img/
logos...')
#2 C:\xampp\htdocs\GAC\core\mvc\core.mvc.YuppController.class.php(54):
EmpresaController->crearAction('C:\xampp\tmp\ph...', 'GAC.png')
#3 [internal function]: YuppController->__call(Array)
#4 C:\xampp\htdocs\GAC\core\routing\core.routing.Executer.class.php
(179): EmpresaController->crear('crear', Array)
#5 C:\xampp\htdocs\GAC\core\web\core.web.RequestManager.class.php
(151): Executer->execute()
#6 C:\xampp\htdocs\GAC\index.php(96): RequestManager::doRequest(NULL)
#7 {main}

saludos...

pablopazos

unread,
Jun 16, 2009, 1:06:49 PM6/16/09
to Yupp Framework PHP
Creo que tiene más que ver con PHP en general que con el framework.

Pueden pasar varias cosas: problemas de permisos, problemas de
condiguración (p.e. estar en modo seguro o mal configurado el
directorio temporal donde se subne las imágenes), algún parámetro
erróneo, en fin, varios aspectos.

Te dejo unos links de una búsqueda que hice en google sobre algunas de
estas causas, creo que vas a encontrar la respuesta por ahí.

http://us3.php.net/manual/en/function.move-uploaded-file.php
http://www.forosdelweb.com/f18/problemas-con-function-move-uploaded-file-621980/
http://www.programacionweb.net/foros/mensaje/?num=12071
http://codegrrl.com/forums/index.php?showtopic=7&st=20

Igualmente, voy a probar bien la subida de archivos, pero como te
cuento, depende de la configuración de cada uno.


Saludos,
Pablo.
Reply all
Reply to author
Forward
0 new messages