Subir un fichero al servidor

Para subir un fichero al servidor, necesitamos:

un formulario un formulario con enctype=multipart/form-data

una entrada de tipo file para poder seleccionar el fichero.

En el siguiente ejemplo usamos una función para subir el fichero al servidor. La función toma como argumentos el nombre del campo del formulario correspondiente al fichero y el directorio donde lo queremos copiar. Además la función devuelve la ruta del fichero que hemos subido.

<?php

function subirfichero($nombre,$directorio)

{

$ruta_fichero = "$_SERVER[DOCUMENT_ROOT]/$directorio/";

if (!is_dir("$ruta_fichero")) mkdir("$ruta_fichero",0777);

$ruta_relativa ="$directorio/";

$name=$_FILES[$nombre]['name'];

$name = ereg_replace("[^a-z0-9._]", "",str_replace(" ", "_", str_replace("%20", "_", strtolower($name))));

$location = $ruta_fichero.$name;

copy($_FILES[$nombre]['tmp_name'],$location);

unlink($_FILES[$nombre]['tmp_name']);

$fichero = $ruta_relativa.$name;

return($fichero);

}

echo '<head>

<title>'.$_SERVER[PHP_SELF].'</title>

</head>

<html>

<body>';

if(isset($_POST[boton]))

{

subirfichero("mifichero","subidos");

}

echo '<form action="'.$_SERVER[PHP_SELF].'" method="post" enctype=multipart/form-data>

Fichero: <input type=file name=mifichero>

<input type="submit" name=boton value="Subir">

</form>';

echo "<a href=$_SERVER[PHP_SELF]>Recargar la Página</a>";

echo '</body>

</html>';

?>

La función también modifica el nombre del fichero para eliminar los posibles espacios y caracteres especiales.