Problemas al querer guardar imagenes en la carpeta default de kumbia php. beta2

311 views
Skip to first unread message

Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 8:42:55 AM11/11/13
to kum...@googlegroups.com
buenas como estan. estoy usando el helpper 
Upload::factory

y quiero cambiarle la ruta de guardado a 
$archivo->setPath(PUBLIC_PATH.'img/default');

Pero al momento de guardar me salta este error.

Error: no se puede escribir en el directorio


Que podria ser? necesito guardar en esa ruta. gracias.

Henry Stivens

unread,
Nov 11, 2013, 8:54:39 AM11/11/13
to kum...@googlegroups.com

El servidor es Windows o Linux?
La carpeta existe?
Tienes permisos de escritura?

--
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 correos electrónicos, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 11:26:14 AM11/11/13
to kum...@googlegroups.com, henry....@gmail.com
Si amigo muchas gracias.

1) el servidor el windows (7)

2) La carpeta si existe.

3) Aqui si que no sabria que pensar, pq le doy a propiedades a la carpeta que cree y me sale (sin la palomita) en azul la casilla del atributo "solo lectura" pero se la quito, le doy aceptar, pero cuando vuelvo a abrir me sale de nuevo. (me tiene loco)

Cuando dejo de usar la funcion setPath me guarda correctamente en la carpeta upload.

Cree la carpeta dentro de esta (upload), y uso el setpath asi:

$path = PUBLIC_PATH . 'default/img/upload/menus';
$archivo = Upload::factory('iconocarga', 'image');
$archivo->setPath($path);

no se si tenga algo mal escrito.

MUCHAS GRACIAS DE ANTEMANO

Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 11:29:23 AM11/11/13
to kum...@googlegroups.com, henry....@gmail.com
Otra cosa, cuando guardo una imagen en upload, me la guarda sin permisos, porque entro a la carpeta trato de abrirla y windows no puede.

Alejandro Quiroz

unread,
Nov 11, 2013, 11:30:59 AM11/11/13
to kum...@googlegroups.com
Que tal buen día,


En servidores Windows ten cuidado en la escritura de las rutas físicas de los archivos.

Te recomiendo en esta parte escribir la ruta de forma genérica con la constante de PHP "DIRECTORY_SEPARATOR" para cualquier sistema operativo evitando utilizar en los paths slash ( / ). En Windows el separador de directorios es back slash (\).

$path = PUBLIC_PATH . 'default' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR .'upload' . DIRECTORY_SEPARATOR. 'menus';


Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 12:48:19 PM11/11/13
to kum...@googlegroups.com
Muchas gracias por tu respuesta  alekir, pero igual me sale este error
Error: no se puede escribir en el directorio; /nominaact/default\img\upload (edite para que me saliera el path a donde mande a guardar)

Note que incluso si dejo $path = PUBLIC_PATH . 'default' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR .'upload';
no me deja guardar.

Pero si no uso la propiedad path, me guarda sin ningun problema dentro de la carpeta upload. y ni idea porque.

Es decir, con el metedo setPath (redireccionando a upload) no me agarrra, pero si no lo uso (queda pordefecto en upload) si me agarra.

Creo que puede ser un mal uso de la funcion SetPath aca dejo mi escript.

Load::lib('upload');
$archivoname = $_FILES['iconocarga']['name'];//por si quiero su bombre
$path = PUBLIC_PATH . 'default' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR .'upload';
$archivo = Upload::factory('iconocarga', 'image');
$archivo->setExtensions(array('jpg', 'png', 'gif'));//le asignamos las extensiones a permitir
$archivo->setPath($path);
 
if ($archivo->isUploaded()) {
                                                 funcioones
                                                 funcioones

Alejandro Quiroz

unread,
Nov 11, 2013, 1:04:43 PM11/11/13
to kum...@googlegroups.com
Prueba quemando la ruta de tu carpeta para asegurarse que verdaderamente existe la carpeta y que se puede acceder a través de código y según eso para seguir descartando cosas, te pongo por ejemplo una ruta para Windows. Escribo doble backslash \\ porque un solo backslash tiene otra funcionalidad en PHP :

$path = 'C:\\wamp\\www\\mi_app\\default\\img\\upload\\';
.....
.....


Saludos,

Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 1:09:07 PM11/11/13
to kum...@googlegroups.com
Pues si, yo la queme en C:/hola/ y guardo :S

estoy viendo que la ruta PUBLIC_PATH sirve para cosas de kumbia (en el navegador) pero no para guardar cosas fisicas pues me devuelve "/public/img"...
es decir obvia el C://.... 

Ahora estoy es viendo como crear esas rutas "prestablecidas" para hacerle una directa a mi carpeta que quiero.

surskate gmail

unread,
Nov 11, 2013, 1:15:58 PM11/11/13
to kum...@googlegroups.com
Para cuando se hace uploads de archivos, lo conveniente es utilizar rutas absolutas y no relativas.
Siempre hay que verificar que las rutas están bien seteadas, como así también los permisos para trabajar sobre las mismas.

Si te queda cómo puedes definir una constante en index.php que apunte a public/:  define("ABSOLUTE_PATH", dirname(dirname(__FILE__)) . '/public/'); o define('ABSOLUTE_PATH', $_SERVER['DOCUMENT_ROOT'] . 'default/public/'); o de la forma que desees, si quieres a mano también.

Así cuando desees realizar upload de archivos utilizas esa constante hacia la carpeta que quieras y listo.
Ej: $archivo->setPath(ABSOLUTE_PATH.'img/uploads/');

Saludos,


2013/11/11 Tomas Andres Mendoza Q <tomasm...@gmail.com>



--

------------------------------------------------------------------------------
Manuel Urbano
www.surskate.com.ar - Skateboarding en la Patagonia

Alejandro Quiroz

unread,
Nov 11, 2013, 1:16:18 PM11/11/13
to kum...@googlegroups.com
Podrías definir una constante como las que se definen en el archivo https://github.com/KumbiaPHP/KumbiaPHP/blob/master/default/public/index.php en la cual tengas que tratar con la ubicación física real de los archivos y reutilizarla donde la necesites, pero te recomiendo que sea calculada como las que están en el archivo de acuerdo a tus necesidades,


Tomas Andres Mendoza Q

unread,
Nov 11, 2013, 1:20:13 PM11/11/13
to kum...@googlegroups.com
Exactamente eso hice amigo, me la cree en base a ellas quedo asi 
define('APP_MENUES', dirname(dirname(__FILE__)). '/public/img/upload/menus/'); y funciona correctamente,

tambien me creee una 
define('APP_MAIN', dirname(dirname(__FILE__))); para cualquier otra necesidad.. Muchas gracias por sus aportes.

joanhey

unread,
Nov 12, 2013, 10:56:25 AM11/12/13
to kum...@googlegroups.com
es mejor usar la constante del servidor, aunque tu solución también es buena
$_SERVER['DOCUMENT_ROOT'];

Y la de APP_MAIN ya esta disponible, se llama APP_PATH y se crea en el index.php de public/ ya que el mismo kumbiaphp los usa APP_PATH, CORE_PATH, 
Además el define está en el public/index.php para que puedan cambiarlas fácilmente por app.
Por ejemplo, pasando una ruta absoluta será más rápido. Pero permite tener la carpeta de app y core en cualquier parte.
Otros ejemplos, cambias la ruta de CORE_APP para usar otra version de core, para portar facilmente a otras versiones. O subes al servidor una app con las nuevas modificaciones en la carpeta app2, y cambias el APP_PATH para que use la nueva carpeta app2. Si todo va bien lo dejas, si falla vuelves a cambiar a la otra carpeta.

Para Alekir el DIRECTORY_SEPARATOR es completamente innecesario usarlo. Siempre que uses el '/', funcionará. A windows le da igual y es mejor para linux y código limpio.
Aunque el DIRECTORY_SEPARADOR si es útil para hacer un explode de una ruta que te da el sistema, para que sea portable.

Tomas Andres Mendoza Q

unread,
Nov 18, 2013, 9:04:38 AM11/18/13
to kum...@googlegroups.com
Muvhas gracias por tu comentario, lo tomare en cuenta.


Reply all
Reply to author
Forward
0 new messages