Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] move_uploaded_file no funciona...

Estas en el tema de move_uploaded_file no funciona... en el foro de PHP en Foros del Web. Hola, tengo este código... Código PHP: <?php if ( $_FILES [ "file" ][ "error" ] >  0 )   {   echo  "Error: "  .  $_FILES [ "file" ][ "error" ...
  #1 (permalink)  
Antiguo 23/05/2013, 10:20
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Pregunta move_uploaded_file no funciona...

Hola, tengo este código...

Código PHP:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo 
"Error: " $_FILES["file"]["error"] . "<br>";
  }
else
  {
  echo 
"Archivo de subida: " $_FILES["file"]["name"] . "<br>";
  echo 
"Tipo de archivo: " $_FILES["file"]["type"] . "<br>";
  echo 
"Tamaño: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  }

$archivo=$_SERVER['DOCUMENT_ROOT']."/test/".$_FILES["file"]["name"];
echo 
"el archivo es: $archivo<br>";

echo 
"Copiando fichero en destino<br>";
move_uploaded_file($_FILES["file"]["tmp_name"], $archivo);
echo 
"Fichero imagen copiado<br>";


//saco el ancho y alto de la imagen original
list($ancho,$alto)=getimagesize($archivo);

$anchooriginal=$ancho;
echo 
"Ancho original: $anchooriginal<br>";
$altooriginal=$alto;
echo 
"Alto original: $altooriginal<br>";

// a ver que es...
$separo explode'.'strtolower($archivo) );
$nombre $separo[0];
$extension $separo[1];

echo 
"Nombre: $nombre<br>";
echo 
"Extension: $extension<br>";

//mis dimensiones finales
$ancho_final="200";
$alto_final="150";

// creamos una nueva imagen en jpg
$imagen_src imagecreatefromjpeg$archivo );
echo 
"imagen creada de jpg<br>";


//recalcular dimensiones para escalar
//incializo variables y calculo
$escala_1=1;
$escala_2=1;
$escala_1=$ancho_final/$anchooriginal;
$escala_2=$alto_final/$altooriginal;

echo 
"Escalas: $escala_1, $escala_2 <br>";

//Comparo para ver si es horizontal o vertical
if ( $altooriginal $anchooriginal )
    {
    
$escala_1 $escala_2;
    }

echo
"Ya tengo la escala vertical-horizontal<br>";

// escalar la imagen
$horizontal=ceil$anchooriginal $escala_1 );
$vertical=ceil$altooriginal $escala_1 );

echo
"El escalado es: $horizontal, $vertical<br>";

//crear la nueva imagen
$final=imagecreatetruecolor $horizontal$vertical );

$tipoimg=gettype($final);
echo 
"tipo=$tipoimg<br>";

echo
"La nueva imagen esta creada<br>";

//copiar la imagen en la nueva imagen pequeña
imagecopyresized $final$imagen_src0000$horizontal$verticalimagesx($imagen_src), imagesy($imagen_src) );

echo
"Copiada y resampleada<br>";

//creo el nuevo nombre para la imagen pequeña

$cadenapeque="p.jpg";
$extraigo=substr($_FILES["file"]["name"],0,-4);
$lapeque=$extraigo.$cadenapeque;

echo 
"La fotopequeña es: $lapeque<br>";


//PASO LA IMAGEN CREADA PEQUEÑA Y LA GRABO EN LA CARPETA DESTINOFINAL

$destinofinal=$_SERVER['DOCUMENT_ROOT']."/test/arriba/";
echo 
"Copiando fichero en destino: $destinofinal<br>";

//prueba2
echo "la dos<br>";
imagejpeg($final$lapeque);
echo 
"dos creada<br>";

move_uploaded_file($lapeque"$destinofinal/$lapeque");

echo 
"Fichero imagen destino copiado en carpeta final $destinofinal<br>";





echo
"cerrando...<br>";

imagedestroy ($final);

echo
"Memoria liberada. [FIN]<br>";
    
?>
Todo funciona bien y parece que hace lo que "de momento" tiene que hacer...

EXCEPTO: el último

Código PHP:
move_uploaded_file($lapeque"$destinofinal/$lapeque"); 
No copia la imagen en el directorio que debe, que se lo especifico antes en la variable que le paso con "$destinofinal"...

Alguien sabe por que???

Agradeceria ayuda.

Muchas gracias.
  #2 (permalink)  
Antiguo 23/05/2013, 10:30
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: move_uploaded_file no funciona...

A lo mejor tiene problemas de escritura

Al directorio al que subes los archivos dale el permiso chmod 777 (rwx)


Saludos
  #3 (permalink)  
Antiguo 23/05/2013, 10:58
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: move_uploaded_file no funciona...

Si, si que tiene permisos, por eso me extraña que no funcione...
Lo que no sé es si es esa linea o la anterior...

Cita:
$destinofinal=$_SERVER['DOCUMENT_ROOT']."/test/arriba/";
Puede ser por eso? no lo se... estoy un poco perdido ...

Alguna ayuda??
  #4 (permalink)  
Antiguo 23/05/2013, 11:15
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: move_uploaded_file no funciona...

Lo que sucede es que la ruta origen parece que no es la correcta por lo tanto no encuentra el archivo que quieres mover..

Cita:
move_uploaded_file($lapeque, "$destinofinal/$lapeque");
Solo para comprobar imprime la variable $lapeque y comprueba ... tal parece que no lleva la ruta completa del archivo.
  #5 (permalink)  
Antiguo 23/05/2013, 11:41
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: move_uploaded_file no funciona...

Ya está hecho esa comprobación...

Los resultados son a la hora de la ejecucion esto:

Cita:

Copiada y resampleada
La fotopequeña es: lapep.jpg
Copiando fichero en destino: /home/www/test/arriba/
la dos
dos creada
Fichero imagen destino copiado en carpeta final /home/www/test/arriba/
cerrando...

Y lo que no se, es porque no salen bien las rutas...
  #6 (permalink)  
Antiguo 23/05/2013, 11:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: move_uploaded_file no funciona...

Si no te salen bien las rutas es porque no las estas definiendo bien, ahora move_uploaded_file te devuelve un booleano true/false que indica si pudo o no mover la imagen, eso no lo estas comprobando.

Revisa que la ruta final sea correcta y exista y tengas permisos para moverla.

Saludos.
  #7 (permalink)  
Antiguo 23/05/2013, 11:46
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: move_uploaded_file no funciona...

Por eso mismo te decía las rutas estan malas la lógica de move_uploaded_file es la siguiente

Cita:
move_uploaded_file("archivo origen", "destino");
Lo cual significa colocar las rutas completas

Cita:
move_uploaded_file("/home/www/test/arriba/archivo_origen.jpg", "/home/www/test/arriba/archivo_destino.jpg");
Si observas en las variables que estas ocupando no llevas las rutas completas, llevas parte de las rutas lo cual no es correcto. cuando te digo rutas completas me refiero a los directorios mas el nombre del archivo...

Etiquetas: variables
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 00:03.