2 Oct

Subir un archivo a tu servidor con PHP

Nunca biene mal saber algo más, aunque no lo vayas a usar.

Yo no pensaba que usaría un formulario para subir archivos al servidor, pero hace unos días he necesitado crear un formulario de este tipo, así que me he puesto a investigar un poco y a crear un script para subir archivos al servidor.

El objetivo del tutorial está claro: Subir un archivo al servidor con un formulario.

Para poder realizarlo necesitamos darle permisos 777 a la carpeta en la que subiremos las imágenes.

El formulario

Primero creamos un formulario con un input de tipo file. Además tenemos que darle al atributo enctype del formulario el valor multipart/form-data.

El campo de para subir el archivo lo llamaremos archivo.

El final tendremos un código así:


<form method="post" enctype="multipart/form-data">
<input type="file" name="archivo">
<input type="submit" value="Enviar">
</form>

El PHP

Ahora pasamos al PHP. Usaremos $_FILE para detectar el nombre temporal de archivo y el nombre del mismo.

Si usamos la función print_r para mostrar la matriz $_FILE, veremos que ésta tiene almacenados, entre otros datos, el archivo temporal, el tamaño y el formato del archivo.

Nosotros nos fijaremos sólo en el nombre.

Antes de seguir tenemos que comprobar que el archivo ha sido subido con el formulario, así que lo comprobamos usando la función is_uploaded_file().

Después usando la función copy() copiaremos el archivo a la carpeta que queramos.

El código quedará así:

if (is_uploaded_file($_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'], ‘C:/Servidor/’.$_FILES['archivo']['name'].”);
}

Nota: Si os fijáis en la función copy, he escrto C:/Servidor/ . Esta es la carpeta en la que quiero poner los archivos subidos. Tened en cuenta que estoy trabajando en un servidor casero en Windows, y que si vosotros tenéis un servidor Linux no debéis poner C:/.

Con esto ya copiaría el archivo a la carpeta que queremos.

Últimos retoques

Por último podemos añadir una cosa más: Un aviso de si se ha subido correctamente o no. Para eso creamos una variable juesto después de la función copy (dentro de la condición), que tenga por valor true.

Luego creamos una nueva condición: Si la variable es true, se ha subido bien el archivo, si no, avisamos del error.

El código final quedaría así:

if (is_uploaded_file($_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'], ‘C:/Servidor/’.$_FILES['archivo']['name'].”);
$subido = true;
}
if($subido) {
echo “<p>El archivo ha sido subido con exito</p>”;
} else {
echo “<p><strong>Error:</strong> El archivo no ha sido subido</p>”;
}

Y listo, con esto ya hemos acabado nuestro formulario para subir archivos.

2 Comentarios

  • fabiola says:

    hola……. ya cuento con ese codigo que es el que sube el archivo a una carpeta de mi servidor…. pero el problema es que necesito que en un php, me registre 5 campos y aparte el campo del archivo(examinar) en mi BD ya que despues de ser registrados se necesitan realizar busquedas…. este es el formulario que utilizo…<form name=”form1″ method=”post” action=”">  <table width=”200″ border=”0″>    <tr>      <td>Disposicion </td>      <td><input name=”a” type=”text” id=”a3″ value=”" size=”50″></td>    </tr>    <tr>      <td>Sintesis</td>      <td><textarea name=”b” cols=”50″ id=”textarea2″></textarea></td>    </tr>    <tr>      <td>fecha</td>      <td><input name=”c” type=”text” id=”c3″></td>    </tr>    <tr>      <td><span class=”text”>Archivo PDF. </span></td>      <td><span class=”text”>        <input name=”archivo” type=”file” class=”casilla” id=”archivo3″ size=”35″ />      </span></td>    </tr>  </table>  <p><span class=”text”>    <input name=”enviar” type=”submit” class=”boton” id=”enviar2″ value=”Upload File” />  </span></p></form>
    esos son algunos de los datos que necesito que se almacenen en la BD al mismo tiempo que se sube el archivo a la carpeta del servidor… ya que al momento de realizar la consulta solo obtengo el nombre del archivo…
    Espero me puedan ayudar …URGEEE!!!!!!!

  • Sumolari says:

    Es formulario del tutorial sólo copia el archivo al servidor, no almacena nada en la base de datos.
    Si lo que quieres es meter contenidos en la base de datos necesitarás hacer una consulta e insertar los datos, pero eso es por otro lado, el tutorial se centra en la subida del archivo.

Pingbacks y trackbacks

Escribe un comentario

Tus datos

Tu comentario

Smileys: Para añadir un smiley desactiva el editor WYSIWYG y haz clic en el smiley que quieres añadir.
Puedes usar estos smileys:

:-[ (B) (^) (P) (@) (O) (D) :-S ;-( (C) (&amp;) :-$ (E) (~) (K) (I) (L) (8) :-O (T) (G) (F) :-( (H) :-) (*) :-D (N) (Y) :-P (U) (W) ;-)

Activar / Desactivar editor WYSIWYG