Con este script podeis ver como se pueden subir ficheros en un servidor mediante un formulario usando POST.
El Script no comprueba permisos de ficheros ni nada, sólo es un pequeña muestra de como se pueden hacer ese tipo de historias con PHP.
Todos los ficheros subidos al servidor se copian al directorio "./descargas/".
Además, también utiliza las nuevas características de 'File Upload' de PHP disponibles a partir de la versión 4.2.0
<?php
//////////////////////////////////////////////////////////
//
// Prueba de Subida de Ficheros al servidor
//
//////////////////////////////////////////////////////////
function mostrar_form_fichero ()
{
echo ("
<form action=\"" . $_SERVER["PHP_SELF"] . "\" enctype=\"multipart/form-data\" method=\"POST\">
<input type=\"hidden\" name=\"op\" value=\"enviar\">
<label>Nombre del Fichero para Subir</label>
<input type=\"file\" name=\"fichero\" size=\"30\">
<input type=\"submit\" value=\"Subir\">
</form>
");
}
//
// Obtiene los ficheros de un directorio
// lo devuelve en un array ordenados
//
function dame_dir ($path)
{
$d = opendir($path);
while ($file = readdir ($d)) {
if ($file != ".." && $file != ".") {
$directorio[] = $file;
}
}
sort ($directorio);
reset ($directorio);
return $directorio;
}
function mostrar_dir ($path)
{
$directorio = dame_dir ($path);
while (list ($pos, $file) = each ($directorio))
{
echo (":: $file ::<br>");
}
}
$operacion = $_POST["op"];
switch ($operacion)
{
case "enviar":
if (is_uploaded_file($_FILES['fichero']['tmp_name'])) {
echo "Nombre Temporal del Fichero en el servidor : " . $_FILES['fichero']['tmp_name'] . "<br>";
$nombreFinal = basename ($_FILES["fichero"]["name"]);
$rutaFinal = "./descargas/$nombreFinal";
copy($_FILES['fichero']['tmp_name'], $rutaFinal);
echo "Fichero " . $nombreFinal . " copiado correctamente en " . $rutaFinal . "<br>";
} else {
echo "Posiblemente el fichero no se pudo enviar correctamente: " . $_FILES['fichero']['name'] . "<br>";
}
break;
default:
mostrar_dir ("./descargas");
mostrar_form_fichero ();
break;
}
?>