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
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)
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, $source, FTP_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
?>
Saludos y Feliz año nuevo a todos