Estoy usando PEAR::HTTP_Upload para cargar los archivos.
Mi clase:
Código PHP:
<?php
class Subir
{
function __construct()
{
// Instanciamos la claseHTTP_Upload
$this->subir = new HTTP_Upload('es');
}
private $archivo;
function cargaArchivo($archivo)
{
// Cargamos el archivo a subir
$this->file = $this->subir->getFiles($archivo);
print_r($this->file);
}
private $propiedad;
function getProp($propiedad)
{
// Cargamos para mostrar la propiedad que queremos
$this->file->getProp($propiedad);
}
private $carpeta;
function moverA($carpeta)
{
// Movemos archivo a la carpeta indicada
$this->movido = $this->file->moveTo($carpeta);
}
function getMensaje()
{
// Obtenemos mensaje
$this->movido->getMessage();
}
function esValido()
{
// Verificamos si el archivo es válido
$this->file->isValid();
}
function sinArchivo()
{
// Verificamos si no se subió un archivo
$this->file->isMissing();
}
function hayError()
{
// Verificamos si hubo algún error
$this->file->isError();
}
function msjError()
{
// Mostramos el mensaje de errror
$this->file->errorMsg();
}
private $var;
function errorPEAR($var)
{
// Verificamos si hubo algun error con PEAR::IsError
PEAR::isError($var);
}
}
?>
Código PHP:
<?
//previamente el la clase cargada con autoload
$upload = new Subir();
/// Cargamos archivo proveniente del formulario
$upload->cargaArchivo('xml');
// Verificamos si el archivo es valido
if ($upload->file->esValido())
{
// Movemos el archivo a la carpeta asignada
$movido = $upload->MoverA(DIR_UPLOAD);
// Verificamos si hubo un error
if (errorPEAR($movido))
{
echo 'Correctamente subido a: ' .$upload->getProp('ext');
}
else
{
// Mostramos mensaje de error
$upload->getMensaje();
}
}
// Verificamos si se subió un archivo
elseif ($upload->sinArchivo())
{
echo 'Debes subir un archivo';
}
// Verificamos si se pudo mover el archivo
elseif ($upload->moverA)
{
// Mostramos mensaje de error
echo $upload->msjError();
}
Lo probé a 'patica' sin usar la clase que yo he hecho, usando directamente la clase PEAR::HTTP_Upload y funciona -perfectamente-.
Código PHP:
<?php
require_once "HTTP/Upload.php";
$upload = new HTTP_Upload("en");
$file = $upload->getFiles("f");
if ($file->isValid()) {
$moved = $file->moveTo('uploads/');
if (!PEAR::isError($moved)) {
echo 'File was moved to uploads/' . $file->getProp('name');
} else {
echo $moved->getMessage();
}
} elseif ($file->isMissing()) {
echo "No file was provided.";
} elseif ($file->isError()) {
echo $file->errorMsg();
}
?>
Saludos