Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2004, 09:57
Avatar de indiestudio
indiestudio
 
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 20 años, 9 meses
Puntos: 1
Problemas de subida de archivos via FTP en PHP

Código PHP:
/* Este codigo lo he copiado de la pagina http://inebria.com/phpftp/ 

que está referenciada, al final de la página, en http://es.php.net/manual/es/ref.ftp.php
*/
<?php
//Conecto al ftp y llamo a la función:
function phpftp_put($phpftp_dir,$userfile,$userfile_name){
$userfile_name="prueba.txt"//Ejemplo
    
srand((double)microtime()*1000000);
    
$randval rand();
    
$tmpfile=$phpftp_tmpdir "/" $userfile_name "." $randval;/*Nombre para el archivo temporal que se guardará en el servidor*/


/*Primera prueba
while(!move_uploaded_file($userfile,$tmpfile)){
$carga=false;
}

Tambien probé esto:
while(!move_uploaded_file($userfile,$tmpfile)){
$carga=move_uploaded_file($userfile,$tmpfile);
}

if(!$carga){

Se queda pensando y, despues de esperar un buen rato, nada
--------------------------
Otra opción que acaba dando error con archivos grandes, pequeños sin problema (es la que viene con el script original):
if(!@move_uploaded_file($userfile,$tmpfile)){ */
    
if(!copy($userfile,$tmpfile)){        
?>
<font color="#ff0000"><strong>Subida Fallida</strong></font>
<p><p>
<a href="javascript: history.back();">Continuar</a>
<?php
        
    
}else{
        
ftp_chdir($ftp,$phpftp_dir);
ftp_put($ftp,$userfile_name,$tmpfile,FTP_BINARY);
        
ftp_quit($ftp);
        
unlink($tmpfile);
        
    }
    
}
?>
Formulario que envia los datos a la funcion:

<form enctype="multipart/form-data" action="ftp.php" method="post" name="form">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000000000000">
<input type="hidden" name="phpftp_dir" value="<?php echo $phpftp_dir;?>">
<input type="submit" value="Subir el archivo:">
<input name="userfile" type="file">
</form>


El código completo de esta aplicación sirve para subir y bajar archivos de mi servidor sin que haga falta un cliente FTP, osea vía web.
El problema es que no permite subir ficheros de más de 1'5Mb (porque no puede grabar el temporal en el servidor, como si se desconectara o algo, con los pequeños sin problema), yo necesitaba poder subir archivos de cualquier tamaño.

No se si es cosa del servidor o del explorador o si hay que añadir alguna funcion más al script para que aguante.

Tambien he probado a subir el <input type="hidden" name="MAX_FILE_SIZE" value="10000000000000000"> desde 1000000 hasta el infinito, incluso lo he dejado vacio.

He probado, sin crear el temporal, con todas las opciones para subir ficheros que tiene PHP:

ftp_put($ftp,$userfile_name,$userfile,FTP_BINARY);

Tambien con ftp_fput(), ftp_nb_fput() y nada, ya no se que hacer.

Muchas gracias de antemano.