PHP - Pasar y recibir campos "file"

 
Vista:

Pasar y recibir campos "file"

Publicado por M@rceloL (7 intervenciones) el 25/08/2007 18:56:15
Buenas, gente. A ver si alguien sabe cómo se hace esto.

Resulta que tengo un formulario que pide varias cosas, entre ellas un archivo de imagen. Todos los datos son enviados a un PHP que los verifica y, en caso de faltar algún campo, regresa al usuario a la página de entrada para que corrija la entrada de datos.

El tema es que a mí me interesa rellenar los campos del formulario que sí estaban correctos, para que el tipo no tenga que volver a cargar todos datos, sino únicamente aquellos que estaban mal o faltaban.

Eso lo sé hacer cuando los campos son de texto, pero ¿Cómo hago con un campo de tipo "file"?

Es decir, yo tengo una instrucción header de tipo:

header("Location blabla.php?Error=Codigo?ValorCampo1=tal?ValorCampo2=tal");

Donde ValorCampo1 y 2 son campos del formulario que deben recargarse. ¿Cómo le paso un archivo para poder recargar un campo de tipo "file"?

Gracias por el tiempo. Saludetes.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar y recibir campos

Publicado por Diego Romero (1450 intervenciones) el 25/08/2007 19:16:21
Estás pasando los valores de los campos como parámetros en la URL. ¿Probaste pasarlos como variables de sesión?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar y recibir campos

Publicado por Nicolás (154 intervenciones) el 25/08/2007 20:28:11
Lamentablemente el valor de un campo file no puede ser modificado ni preestablecido.
Deberías realizar la validación del formulario en la misma página si es que no quieres perder el valor del file.
Si por otra razón deseas saber cual era la ubicación del archivo seleccionado dentro de la máquina del cliente, lo que debes hacer es guardarla dentro de un campo oculto, ya que el campo file lo que hace es enviar el archivo y nada mas. Fijate en esto:

<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="file" onchange="document.form1.filename.value=document.form1.file.value" />
<input name="filename" type="hidden" id="filename" />
<input type="submit" name="Submit" value="Enviar" />
</form>

Este formulario envía el archivo y su ubicación dentro de la máquina cliente (oculto). Debes tener cuidado con las "\" ya que las duplica. No sé como funcionará en otro sistema operativo, pero para clientes Windows tendrías que ejecutar:

<?php
if (isset($_POST['Submit'])) {
$archivo = $_POST['filename'];
$archivo = str_replace("\\\\", "\\", $archivo);
echo $archivo;
}
?>

para eliminar las dobles \\

A partir de aquí, ya tienes la dirección del archivo en la máquina cliente. Prueba modificar el valor del file del formulario para ver si lo consigues... yo no he podido.
Espero haber sido de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar y recibir campos

Publicado por M@rceloL (7 intervenciones) el 25/08/2007 21:50:22
Gracias, muchachos.

Voy a probar sus ideas a ver si llego a algún lado.

Diego: Pregunta tonta: ¿Cómo asigno un $_FILES a un $_SESSION?... Es que esto de las sesiones no lo entiendo mucho que digamos y bucar en Google "file $_SESSION" es como buscar una aguja en un pajar..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar y recibir campos

Publicado por Diego Romero (1450 intervenciones) el 25/08/2007 23:29:54
Uhm... He estado pensando que tal vez no sea posible asignar un valor a un input de tipo file, quizá el navegador no lo permite por una cuestión de seguridad.

Pensaba que sería una buena forma de robar información de la computadora del cliente. Porque si puedes poner un valor predeterminado en un input de tipo file quiere decir que puedes hacer que el navegador te envie cualquier archivo al que tenga acceso, incluidas las cookies, documentos de word, hojas excel o cualquier otro archivo con información sensible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar y recibir campos

Publicado por Nicolás (154 intervenciones) el 26/08/2007 00:03:12
Muy bien pensado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar y recibir campos

Publicado por M@rceloL (7 intervenciones) el 26/08/2007 03:43:09
Buena idea para robar datos... Seguro que alguien ya la probó y no funciona (bueno, quizás en IE sí...).

Gracias a los dos por el tiempo. Saludetes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar