Foros del Web » Programando para Internet » PHP »

Subir archivo y guardar ruta

Estas en el tema de Subir archivo y guardar ruta en el foro de PHP en Foros del Web. Hola, tengo un formulario para introducir solicitudes de trabajo. Se crea una referencia, descripcion,... y se guarda en un registro de la base de datos. ...
  #1 (permalink)  
Antiguo 29/11/2007, 06:18
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Subir archivo y guardar ruta

Hola, tengo un formulario para introducir solicitudes de trabajo. Se crea una referencia, descripcion,... y se guarda en un registro de la base de datos. Quiero añadir un campo tipo file para adjuntar archivos. Lo hice así:

Código PHP:
<input name="adjuntos" type="file"
En el action del form puse
Código PHP:
 echo $_SERVER['PHP_SELF'
y dentro de la misma página este código php para subir el archivo:

Código PHP:
if (isset($_POST['submit'])) {
                        
$ruta="files/".$_FILES['adjuntos']['name'];
                        if(
is_uploaded_file($_FILES['adjuntos']['tmp_name'])) {
                            if(
move_uploaded_file($_FILES['adjuntos']['tmp_name'], $ruta)) {
                                echo 
"<b>Subida correcta!. Datos:</b><br>";
                            echo 
"Nombre: <i><a href=\"".$_FILES['adjuntos']['name']."\">".$_FILES['adjuntos']['name']."</a></i><br>";
                            echo 
"Tipo MIME: <i>".$_FILES['adjuntos']['type']."</i><br>";
                                echo 
"Peso: <i>".$_FILES['adjuntos']['size']." bytes</i><br>";
                                    echo 
"<br><hr><br>";
                             }
                        }
                    } 
La peticion se envía correctamente, el archivo se guarda en el servidor dentro de la carpeta files y el registro de la base de datos queda grabado a excepción del campo adjuntos que me gustaría almacenase la ruta del archivo subido. Como hago para almacenar esta ruta? ¿Tengo que darle algún value al campo file, o crear un nuevo formulario para subir archivos?

Saludos compañeros
  #2 (permalink)  
Antiguo 29/11/2007, 06:31
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 18 años
Puntos: 3
Re: Subir archivo y guardar ruta

Tienes que añadir a la DB la dirección del archivo (que imagino que estará almacenada en $_FILES['adjuntos']) y eso puedes hacerlo dentro del IF que verifica que el archivo ha sido subido correctamente.
  #3 (permalink)  
Antiguo 29/11/2007, 06:39
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Subir archivo y guardar ruta

La dirección del archivo se almacena en $ruta. He probado hacer esto:

Código PHP:
<input name="adjuntos" type="file" value="echo $ruta;"
pero no funciona porque la variable $ruta toma el valor cuando el archivo es subido.

Lo que tú propones tiene sentido, pero no "veo" la sintaxis que tengo que introducir. Una ayudita please. Saludos
  #4 (permalink)  
Antiguo 29/11/2007, 07:08
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 18 años
Puntos: 3
Re: Subir archivo y guardar ruta

Para almacenarlo en la DB tienes que hacer el siguiente query
(llamemos a la tabla "archivos" y al campo de la ruta "ruta"):

Código PHP:
mysqli_query($conexion,'INSERT INTO archivos (ruta) VALUES ('.$ruta.')'); 
Esto tendrías que ponerlo dentro del if que ya tienes:
Código PHP:
if(move_uploaded_file($_FILES['adjuntos']['tmp_name'], $ruta)) {
...

  #5 (permalink)  
Antiguo 29/11/2007, 07:12
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Subir archivo y guardar ruta

Perfecto stardust. Gracias por la ayuda.
  #6 (permalink)  
Antiguo 30/11/2007, 04:56
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Subir archivo y guardar ruta

Esa forma es correcta si tienes una pagina con el formulario multipart/form-data y otra para subir el archivo. Pero mi intención es subir el archivo y guardar la ruta en la misma página. Este es mi formulario:

Código HTML:
<form action="<?php echo $editFormAction ?>" method="post" enctype="multipart/form-data" name="form2">

<input type="text" name="referencia">

<input name="archivo" type="file">


<?php if (isset($_POST['submit'])) {
           $ruta="files/".$_FILES['archivo']['name'];
	   if(is_uploaded_file($_FILES['archivo']['tmp_name'])) {
	          if(move_uploaded_file($_FILES['archivo']['tmp_name'], $ruta)) {
                          }
	   }
           }?>

		
<input type="hidden" name="adjuntos" value="<?php echo $ruta; ?>">

</form> 
El problema es que en la base de datos solo se guarda files/. No entiendo porqué la variable $ruta no toma $_FILES['archivo']['name']. Agradezco vuestra ayuda
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:12.