Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] move_upload_file , no consigo que funcione

Estas en el tema de move_upload_file , no consigo que funcione en el foro de PHP en Foros del Web. Hola. Tengo este código... Código PHP: <?php //me triago la imagen seleccionada que almaceno en la variable '$_files' echo  "FASE 1: <br><br>" ; if ( $_FILES [ "file" ][ "error" ] >  0 )   {   echo  "Error: "  .  $_FILES ...
  #1 (permalink)  
Antiguo 24/05/2013, 00:57
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Pregunta move_upload_file , no consigo que funcione

Hola.
Tengo este código...

Código PHP:
<?php

//me triago la imagen seleccionada que almaceno en la variable '$_files'

echo "FASE 1: <br><br>";

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>";
  }


//ya tengo la información de la imagen y empiezo a enrutarla...

$ruta1=$_SERVER['DOCUMENT_ROOT']."/test/".$_FILES["file"]["name"];
echo 
"La ruta 1 es: $ruta1<br>";

// una vez tengo la ruta donde quiero que esté, la guardo...

echo "Copiando fichero en Ruta 1<br>";
move_uploaded_file($_FILES["file"]["tmp_name"], $ruta1);
echo 
"Fichero imagen grande que viene del formulario copiado en su sitio<br><br>";




//comienza la segunda fase... crear la imagen pequeña
echo "FASE 2: <br><br>";

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

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

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

// a ver que es... esto me sirve para luego hacer la validacion y ver si acepto formato o no...
// aun no hecho...
$separo explode'.'strtolower($ruta1) );
$nombre $separo[0];
$extension $separo[1];

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


//Asigno mis dimensiones finales de la imagen pequeña que quiero usar
$ancho_final="200";
$alto_final="150";

// creamos una nueva imagen en jpg, el unico formato que voy a reconocer como valido.
$imagen_src imagecreatefromjpeg$ruta1 );
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>";

imagejpeg($final$lapeque);
echo 
"foto pequeña creada<br><br>";



// fase 3, pasar la imagen pequeña creada a su ruta pertinente...
echo "FASE 3: <br><br>";

$ruta2=$_SERVER['DOCUMENT_ROOT']."/test/arriba/";
$ruta=$ruta2.$lapeque;
echo 
"Mi ruta 2, es: $ruta<br>";

//cambio los permisos antes de subir
chmod $ruta0777 );

// y la copio...
move_uploaded_file($ruta1$ruta2);

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


// voy cerrando y liberando...
echo"cerrando...<br>";

imagedestroy ($final);

echo
"Memoria liberada. [FIN]<br>";
    
?>
Y me da estos resultados...

Cita:
FASE 1:

Archivo de subida: LUFT346.JPG
Tipo de archivo: image/jpeg
Tamaño: 58.04296875 kB
La ruta 1 es: /home/www/test/LUFT346.JPG
Copiando fichero en Ruta 1
Fichero imagen grande que viene del formulario copiado en su sitio

FASE 2:

Ancho original: 500
Alto original: 334
Nombre: /home/www/test/luft346
Extension: jpg
Imagen creada de jpg
Escalas: 0.4, 0.44910179640719
Ya tengo la escala vertical-horizontal
El escalado es: 200, 134
tipo=resource
La nueva imagen esta creada
Copiada y resampleada
La fotopequeña es: LUFT346p.jpg
foto pequeña creada

FASE 3:

Mi ruta 2, es: /home/www/test/arriba/LUFT346p.jpg
Fichero imagen destino copiado en carpeta final /home/hispaviacion/www/test/arriba/LUFT346p.jpg
cerrando...
Memoria liberada. [FIN]
Con la funcion move_upload_file, uso estas dos rutas que se ven en los resultados:

Cita:
La ruta 1 es: /home/www/test/LUFT346.JPG
Mi ruta 2, es: /home/www/test/arriba/LUFT346p.jpg
Pues la primera funciona y se graba perfectamente, pero la segunda no hay manera de que se quede en donde se ha especificado y se queda en la ruta anterior, donde se graba sin problemas...

Alguien sabría por que ocurre esto y no se graba cada cosa en su sitio??

Igual me dejo algo o no, pero no se que mirar... ayuda, por favor.

gracias!
  #2 (permalink)  
Antiguo 24/05/2013, 01:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: move_upload_file , no consigo que funcione

move_uploaded_file() es para mover archivos que se han subido por un formulario, no para mover archivos entre carpetas, para que se entienda mas fácil, cuando subes un archivo este se guarda en la carpeta temporal del sistema, lo que hace dicha función es mover el archivo temporal (con nombre temporal) a su ubicación final, para lo que quieres hacer es necesario usar unlink() y copy()...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 24/05/2013, 01:12
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: move_upload_file , no consigo que funcione

move_uploaded_file() sßolo moverá el archivo subido por POST, la segunda vez debes user copy file o move file.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #4 (permalink)  
Antiguo 24/05/2013, 01:31
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: move_upload_file , no consigo que funcione

Ok... genial. gracias.
Pero solo una pregunta mas...

Si hago copy, me hara una copia y luego tendre que hacer un delete de la "primera", no?...

Y el move file, que funcion es? porque buscando en el manual de php, el unico move que encuentro es el que uso... move_uploaded_file...

Gracias!!
  #5 (permalink)  
Antiguo 24/05/2013, 03:11
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: move_upload_file , no consigo que funcione

De forma nativa no existe una función que mueva archivos entre carpetas/unidades, pero vamos, que tampoco es tan difícil crear una función que haga dicha acción, con copy() y unlink() tienes todo para crear la función aunque si no la vas a usar mas veces crear una función esta de mas...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 24/05/2013, 03:26
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: move_upload_file , no consigo que funcione

Ok, gracias.
voy a probarlo y lo doy por solucionado.
gracias!!!

Etiquetas: formulario, resultados, 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 10:30.