Ya resolví el error (aunque sigo sin saber cuál era) con otro script:
Código PHP:
function subir_fichero()
{
//Otras variables
$fecha = date("Y-m-d");
$tamano_fic=2097152;
// Datos del archivo original
$fichero=$_FILES['archivo']['name']; // Nombre del fichero
$fichero=strtolower($fichero); // Nombre del fichero (minúsculas)
$directorio="./juegos/"; // Directorio
$fichero_ruta="$directorio$fichero"; // Ruta del fichero donde se guardara
$temporal=$_FILES['archivo']['tmp_name']; // Ruta del fichero temporal
$tipo = $_FILES [ 'archivo' ][ 'type' ]; //Tipo mime del fichero
//Si queremos que sea un tipo de fichero obligatorio
if(strlen($oblitipo)!=0){
if($tipo!=$oblitipo){
echo ('<p>El tipo de fichero no es válido. Debe ser: ' . $oblitipo . '</p>');
exit();
}
}
// Comprobar que esta subido, de forma temporal
if (!is_uploaded_file ($temporal)){
echo ('<p>No ha seleccionado el archivo.</p>');
exit();
}
// Comprobar que no exista
if(file_exists ($fichero_ruta)){
echo ('<p>El fichero ya existe ('.$fichero_ruta.')</p>');
exit();
}
// Mover a la ruta
move_uploaded_file($temporal,$fichero_ruta);
// Comprobar tamaño, en bytes
$tamano=filesize($fichero_ruta);
if ($tamano>$tamano_fic){
echo ('<p>Ese archivo no se puede subir, es demasiado grande ('.$tamano_fic.' bytes como máximo).</p>');
unlink($fichero_ruta);
exit();
}
// Dirección del fichero
$fichero_ruta2=str_replace ('./','',$fichero_ruta); // Quitar el ./ inicial
$link2=pathinfo($_SERVER['PHP_SELF']); // Información sobre la ruta
$link='http://'.$_SERVER['HTTP_HOST'].$link2[dirname].'/'.$fichero_ruta2;
// Datos del fichero nuevo
echo '<h2>Datos del fichero.</h2>';
echo 'Ruta relativa: '.$fichero_ruta.'<br />';
echo 'Ruta absoluta: '.$link.'<br />';
echo 'Tamaño: '.$tamano.' (bytes)<br />';
echo 'Tipo (mime): '.$tipo.'</p>';
//Mostrar información aparte
if(strlen($moreinfo)!=0){
echo "<br /><hr />" . $moreinfo;
}
}
Saludos
PDTA: Creo que lo de la $moreinfo no funciona, ¿hay algo mal?