Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2005, 15:59
Avatar de cauly
cauly
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 22 años, 2 meses
Puntos: 0
Subir archivos grandes con FTP

Necesito que algunos usuarios suban archivos grandes (de más de 10 MB) al servidor, anduve buscando y encontré este Script:

ftp.php
Código PHP:
<?
# FUNCIONES FTP

# CONSTANTES
# Cambie estos datos por los de su Servidor FTP
define("SERVER","localhost"); //IP o Nombre del Servidor
define("PORT",21); //Puerto
define("USER","usuario"); //Nombre de Usuario
define("PASSWORD","pass"); //Contraseña de acceso
define("PASV",true); //Activa modo pasivo

# FUNCIONES

function ConectarFTP(){
//Permite conectarse al Servidor FTP
$id_ftp=ftp_connect(SERVER,PORT); //Obtiene un manejador del Servidor FTP
ftp_login($id_ftp,USER,PASSWORD); //Se loguea al Servidor FTP
ftp_pasv($id_ftp,MODO); //Establece el modo de conexión
return $id_ftp//Devuelve el manejador a la función
}

function 
SubirArchivo($archivo_local,$archivo_remoto){
//Sube archivo de la maquina Cliente al Servidor (Comando PUT)
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
ftp_put($id_ftp,$archivo_remoto,$archivo_local,FTP_BINARY);
//Sube un archivo al Servidor FTP en modo Binario
ftp_quit($id_ftp); //Cierra la conexion FTP
}

function 
ObtenerRuta(){
//Obriene ruta del directorio del Servidor FTP (Comando PWD)
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
$Directorio=ftp_pwd($id_ftp); //Devuelve ruta actual p.e. "/home/willy"
ftp_quit($id_ftp); //Cierra la conexion FTP
return $Directorio//Devuelve la ruta a la función
}
?>
el formulario que uso para que se suba el archivo (junto con la funcion de listar los archivos), es este:

index.php

Código PHP:
include('ftp.php'); //Incluye el archivo de funciones
if(!empty($_POST["archivo"])){ //Comprueba si la variable "archivo" se ha definido
SubirArchivo($_POST["archivo"],basename($_POST["archivo"]));
//basename obtiene el nombre de archivo sin la ruta
unset($_POST["archivo"]); //Destruye la variable "archivo"
}

    echo 
"<p>Subir Archivo</p>\n"
         
."<hr />\n"
         
."<form action=\"\" method=\"post\" name=\"form_ftp\" id=\"form_ftp\">\n"
         
."<p>Elegir archivo :\n"
         
."<input name=\"archivo\" type=\"file\" id=\"archivo\" />\n"
         
."<input name=\"Submit\" type=\"submit\" value=\"Subir Archivo\" />\n"
         
."<hr /><p>Lista de Archivos</p>\n"
         
."<table width=\"69%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n"
         
."<tr><td width=\"48%\" align=\"center\"><p>Nombre</p></td>\n"
         
."<td width=\"22%\" align=\"center\"><p>Tama&ntilde;o</p></td>\n"
         
."<td width=\"30%\" align=\"center\"><p>Fec. Modificaci&oacute;n</p></td>\n"
         
."</tr>\n";

$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
$ruta=ObtenerRuta(); //Obtiene la ruta actual en el Servidor FTP

echo "<b>El directorio actual es: </b> ".$ruta;


$lista=ftp_nlist($id_ftp,$ruta); //Devuelve un array con los nombres de ficheros
$lista=array_reverse($lista); //Invierte orden del array (ordena array)
while ($item=array_pop($lista)) //Se leen todos los ficheros y directorios del directorio
{
$tamano=number_format(((ftp_size($id_ftp,$item))/1024),2)." Kb";
//Obtiene tamaño de archivo y lo pasa a KB
if($tamano=="-0.00 Kb"// Si es -0.00 Kb se refiere a un directorio
{
$item="<i>".$item."</i>";
$tamano="&nbsp;";
$fecha="&nbsp;";
}else{
$fecha=date("d/m/y h:i:s"ftp_mdtm($id_ftp,$item));
//Filemtime obtiene la fecha de modificacion del fichero; y date le da el formato de salida
}

    echo 
"<tr><td><p>$item</p></td>\n"
         
."<td align=\"right\"><p>$tamano</p></td>\n"
         
."<td align=\"right\"><p>$fecha</p></td>\n"
         
."</tr>\n";
}


    echo 
"</table>\n"
Lo saqué de desarrolloweb, me lista bien los archivos que hay en el directorio raiz, pero cuando eligo algún archivo para subirlo al servidor, me carga la página de nuevo sin marcar ningún error pero no sube ningún archivo.
La dirección de donde lo saqué es esta:
http://www.desarrolloweb.com/articulos/1752.php