Recientemente comencé a trabajar en una aplicación web de carga de imágenes en PHP, y planeo enviar una variable $_FILES a otro formulario, después de haberla tomado de un formulario anterior.
Por ejemplo: form1 tiene un <input type="file" name="image"> . Después de eso, form2 lo toma usando $_FILES['image'] y quiere enviarlo a form3 a través $_SESSION['image'] = $_FILES['image'] .
El problema es que, después de intentar move_uploaded_file() usando esa variable de sesión, el archivo no se mueve al directorio. Mi directorio de upload (en el que almaceno todas las imágenes) está vacío.
Así es como intenté mover el archivo:
$file = "upload/".$link.".".pathinfo($_SESSION['file']['name'], PATHINFO_EXTENSION); move_uploaded_file($_SESSION['file']['tmp_name'], $file); No te preocupes por $link . Esa es solo una "clave" que uso en mis enlaces (una forma de generar automáticamente los enlaces).
También intenté declarar otra variable $_FILES y asignarle el valor de $_SESSION['file'] , y luego usarla en move_uploaded_file() , pero aún así no funcionó.
Mi pregunta es: ¿es posible pasar correctamente una variable $ $_FILES a $_SESSION ? Si es así, ¿cómo es que no funciona en mi caso? ¿Qué hice mal?
Si necesita más código y (o) información, no dude en dejar un comentario y se lo proporcionaré lo antes posible.
El problema es que la matriz $_FILES solo apunta a la ubicación temporal donde se encuentra el archivo. No contiene los datos del archivo directamente.
Una vez que finaliza su solicitud inicial, ese archivo temporal se elimina automáticamente. Entonces, si bien $_FILES puede persistir en la sesión, el archivo en sí no lo es. Deberá guardarlo en algún lugar durante la solicitud inicial (usando move_uploaded_file() ), y luego colocar una referencia al archivo guardado en la sesión, en lugar de los datos sin procesar $_FILES .