Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/12/2005, 11:17
Avatar de franquero
franquero
 
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Problema al subir archivos pesados por FTP

Buenas.

Estoy liado con el tema de subir archivos al servidor mediante formularios php. Pensé que lo había conseguido utilizando ftp_put(), pero resulta que si bien sube correctamente los archivos, aquellos que son muy pesados (3MB) los crea en el directorio correspondiente con un peso de 0 bytes. Es decir, al subir un archivo .rar y teclear su dirección en el navegador, no da error de página no encontrada, sino que muestra una página en blanco. Y al acceder con el programa FTP Filezilla muestra que el archivo está en el directorio pero con un tamaño de 0 bytes (esto cuando los archivos pesan más de 1MB)

Cuando los archivos son menos pesados sí los sube correctamente.

He mirado la configuración de mi php con phpinfo(), pero lo único que he visto (no entiendo demasiado) que pueda tener relación es post_max_size, en el que pone 55M.
Si alguien sabe cómo mirar el límite de tamaño de los archivos que se suben por FTP, y en caso de que así fuera, cómo modificarlo estaría muy agradecido

Aquí les dejo mi script para que le echen un vistazo. No he comentado todavía que cuando se sube un archivo se insertan datos en una base mysql, para luego poder tener una tabla que liste los archivos y haga un enlace a cada uno.

Código PHP:
<?php
//Los datos se reciben desde un formulario html
//Comprobamos que los datos recibidos son correctos
    
$errores = array();

    if (
strlen(trim($_POST['nombre_servidor'])) < 5) {
        
$errores[] = 'Escriba el nombre con el que se subirá el archivo al servidor (mínimo 5 caracteres)<br>';
    }
    if (
strlen(trim($_POST['descripcion'])) < 5) {
        
$errores[] = 'Escriba la descripción del archivo (mínimo 5 caracteres)<br>';
    }
    if (!
$_POST['seccion']) {
        
$errores[] = 'Elija una sección en la que ubicar el archivo<br>';
    }
    if (!
$_FILES['source_file']['name']) {
        
$errores[] = 'Seleccione el archivo que desea subir<br>';
    } 
    if (
$errores) {
        foreach (
$errores as $err) {
            print 
"Error: $err<br>";
        }
        print 
"<a href=\"javascript:history.back()\">Atrás</a>";
    } else { 
// ELSE PRINCIPAL

        // ********** CONECTAMOS CON EL SERVIDOR ***************** \\
         
$ftp_server='ftp.tuservidor.com';//serverip
         
$conn_id ftp_connect($ftp_server);
           
// login with username and password
           
$user="tu_usuario";
           
$passwd="tu_clave";
           
$login_result ftp_login($conn_id$user$passwd);

                
// Verificamos la conexión
                
if ((!$conn_id) || (!$login_result)) {
                   echo 
"La conexión FTP ha fallado";
                   die;
               } else {
                   echo 
"<br>Conectado a $ftp_server, para el usuario $user<br>";
                   }
                    
//Llegamos hasta el directorio en el que queremos guardar el archivo
                      
ftp_chdir($conn_id"public_html");
                    
ftp_chdir($conn_id"descargas");
                    
ftp_chdir($conn_id$_POST['seccion']);
    
                  
// ****** FUNCIÓN PARA SUBIR ARCHIVOS *********** \\
                
function subir($conexion_ftp$destination_file$source) {   
                    
// subir el archivo
                    
$upload ftp_put($conexion_ftp$destination_file$sourceFTP_BINARY);

                        
// check upload status
                        
if (!$upload) {
                           echo 
"Ha fallado la subida del archivo: $destination_file";
                        } else {
                           echo 
"<b>$destination_file</b> se ha subido correctamente a <b>$ftp_server</b> al directorio <b>/descargas/$_POST[seccion]</b>";
                           
//Incluimos los datos del archivo subido en la base de datos
                        
$conec mysql_connect("localhost""usuario""clave");
                        
mysql_select_db("base_de_datos"$conec);
                            
//Insertamos en la tabla el nombre, el peso, el archivo y la sección
                            
$sql mysql_query("INSERT INTO archivos_descarga (nombre,descripcion,seccion) VALUES     ('$_POST[nombre_servidor]','$_POST[descripcion]','$_POST[seccion]')"$conec);
                                
//cerramos la conexion MYSQL
                                
mysql_close($conec);
                        }
                } 
//final de subir()

                    //Subimos el archivo
                    
subir($conn_id$_POST['nombre_servidor'], $source_file);  
                        
//Cerramos la conexión FTP
                    
ftp_close($conn_id);
    } 
// FINAL DE ELSE PRINCIPAL
?>
Espero que me podáis echar una mano.
Saludos y Feliz año nuevo a todos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.

Última edición por franquero; 03/08/2006 a las 00:37