Foros del Web » Programando para Internet » PHP »

Problema al subir una foto

Estas en el tema de Problema al subir una foto en el foro de PHP en Foros del Web. Hola a todos, llevo más de una hora dándole vueltas y vueltas y no logro solucionarlo. Simplemente quiero subir una foto. El código antes funcionaba. ...
  #1 (permalink)  
Antiguo 30/08/2012, 02:23
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Problema al subir una foto

Hola a todos, llevo más de una hora dándole vueltas y vueltas y no logro solucionarlo. Simplemente quiero subir una foto. El código antes funcionaba.

Código PHP:
//Componemos la fecha en formato americano Y-m-d para MySQL
$fecha $_POST['fecha'];
$dia substr($fecha02);
$mes substr($fecha32);
$anho substr($fecha64);
$fecha $anho."-".$mes."-".$dia;
$fecha_foto $fecha."_".date('H:m:i');

//Subimos la foto
if ($_FILES['foto']["name"] != NULL)
{        
    
$uploads_dir './galeria/';
    
$tmp_name $_FILES["foto"]["tmp_name"];        
    
$name $fecha."_".$nombre;    
    
move_uploaded_file($tmp_name"$uploads_dir/$name");
    
$rutaFoto "$uploads_dir/$name"//para subir a MySQL

Vease la antepenúltima línea. Si $name = $fecha."_".$nombre; funciona perfectamente. Si cambio $fecha por $fecha_foto ya no funciona! No lo entiendo.

Esto después de darle mil vueltas. Antes lo tenía diferente. $nombre lo saco de más arriba, es el nombre de un evento y es correcto. Hacer un echo de $fecha_foto también da bien.

¿Alguna idea?
Por cierto, como puedo llevar hasta aquí la extensión de la imagen? porque el fichero temporal no pone la extension.

Todo esto viene a que quise modificar el código porque cuando quieren subir una imagen con espacios no subían. Así que me decidí por cambiar el nombre de las fotos que suben. Y me acabo dar cuenta que si el nombre del evento no tiene espacios sube bien, el problema es que tenga espacios. Pero aunque añada el nombre así:
$name = $fecha."_".str_replace(" ", "_", $nombre);
Sigue sin funcionar. La foto no sube.


EDIT: claro, no se puede poner en un nombre de fichero ":" los dos puntos. Ahora lo que no se es como pasarle la extensión.¿Alguien?
Y otro problema es que si el nombre del evento tiene acentos, si bien funciona, en Windows se ven caracteres extraños en los nombres de las fotos

Última edición por alyciashape; 30/08/2012 a las 02:49
  #2 (permalink)  
Antiguo 30/08/2012, 04:30
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 8 meses
Puntos: 21
Respuesta: Problema al subir una foto

Si pones

Código PHP:
Ver original
  1. $name = $fecha_foto."_".$nombre;
  2. echo  $name;

Yo creo que te lo mostraría bien yo metiendo variables a cadenas las suelo concatenar de la siguiente forma
Código PHP:
Ver original
  1. move_uploaded_file($tmp_name, $uploads_dir."/".$name);

Y para el tema de acentos, eñes y demás caracteres especiales si googleas encontrarás alguna función para transformar estos caraceres especiales en válidos.

Espero haberte ayudado =)
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #3 (permalink)  
Antiguo 30/08/2012, 05:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema al subir una foto

Para eliminar caracteres puedes usar algo como esto: http://www.forosdelweb.com/f18/ayuda...3/#post2708313

Para obtener la extensión:
Código PHP:
Ver original
  1. // Con explode separas el nombre en base a los puntos en un arreglo (array)
  2. // Con end obtienes el último elemento de un arreglo
  3. $ext = end(explode('.', $_FILES['foto']["name"]));
  4.  
  5. // Agregas un punto y la extensión
  6. $name .= ".$ext";

Por cierto, te sugiero verificar si el archivo se subió correctamente en vez de sólo comparar el nombre, en $_FILES['foto']["error"] tienes un código de error, donde 0=Todo OK, 4=No se subió archivo.

Más info: http://php.net/manual/es/features.fi...oad.errors.php
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 30/08/2012, 05:06
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema al subir una foto

Gracias a los 2. Ya había encontrado un código para verificar caracteres, pero gracias igualmente.

Lo de la extensión y lo del error genial. Muchas gracias
  #5 (permalink)  
Antiguo 30/08/2012, 08:42
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema al subir una foto

Hice con el código ese una función, tal que así:

//Función que devuelve la extensión
function devuelve_extension($cadena) {
return end(explode('.', '$cadena'));
}
y la llamo así:
$cadena = $_FILES['foto']['name'];
echo "La extensión es ".devuelve_extension("$cadena");

Esto me pone:
La extensión es $cadena

con el error
Strict standards: Only variables should be passed by reference in C:\wamp\www\privado\includes\clases.php on line 9

No se que quiere decir. No puedo pasar la cadena?
  #6 (permalink)  
Antiguo 30/08/2012, 10:17
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 8 meses
Puntos: 21
Respuesta: Problema al subir una foto

creo que lo que no te deja es devolver end(explode('.','$cadena'));
cambialo por

Código PHP:
Ver original
  1. function devuelve_extension($cadena) {
  2. $cadena=    end(explode('.', '$cadena'));
  3. return $cadena;
  4. }

Debería dejarte, espero que sea este el problema.
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D

Etiquetas: foto, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:41.