Foros del Web » Programando para Internet » PHP »

Problemas de subida de archivos via FTP en PHP

Estas en el tema de Problemas de subida de archivos via FTP en PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/05/2004, 10:57
Avatar de indiestudio  
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 14 años, 5 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([email protected]_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.
  #2 (permalink)  
Antiguo 10/05/2004, 07:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otro detalle sobre "concepto":
Los archivos los subes por médio de PHP vía HTTP no por FTP. Por FTP los mueves si quieres hacia el mismo servidor donde lo subistes o a otro (usando la cuenta FTP para tal fin) .. Pero el hecho de "subir" el archivo via "web" se hace por HTTP y es ese protocolo junto con las directivas de PHP tipo: upload_tmp_filesize y post_max_size (php.ini) las que definen que tanto grande puedes subir un archivo.

Te recomiendo que uses los arrays supeglobales $_FILES en lugar de asumir como globales las variables.

También .. usar move_uploaded_file() en lugar de copy() o de las funciones de FTP y más cuando el archivo que subes se va a quedar en el mismo servidor (en cualquier directorio) que usa PHP.

Puedes ver todo esto que te comento en la documentación oficial de PHP sobre "Upload":

http://www.php.net/manual/en/features.file-upload.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/05/2004, 09:38
Avatar de indiestudio  
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 14 años, 5 meses
Puntos: 1
Muchas gracias por tu ayuda
Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:40.