Foros del Web » Programando para Internet » PHP »

Fallo al cargar archivo de manera indirecta

Estas en el tema de Fallo al cargar archivo de manera indirecta en el foro de PHP en Foros del Web. Buenas a todos. Resulta que tengo un formulario con el que subo imagenes al servidor. Lo que pretendo es lo siguiente: elijo las imagenes, le ...
  #1 (permalink)  
Antiguo 14/05/2008, 12:26
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 1
Fallo al cargar archivo de manera indirecta

Buenas a todos.

Resulta que tengo un formulario con el que subo imagenes al servidor. Lo que pretendo es lo siguiente: elijo las imagenes, le doy a enviar y, a continuacion, se lanza un programa php que introduce en un array todas las imagenes que se han introducido en el formulario. Y os preguntareis ¿pero para que?. Para luego, en un nuevo programa php, cargarlas una a una lanzando una pagina por cada archivo que imprima el nombre del mismo, de manera que, el que sube las imagenes, verá que primero se carga la primera imagen, cuando termina de cargar esta, pasa a cargar la siguiente imprimiendo por pantalla el nombre de la misma.

Digamos que lo que estoy intentando hacer es que el que sube las imagenes sepa que la carga no se ha quedado colgada ya que actualmente se esta cargando una.

A continuacion pongo el codigo:

index.php
Código HTML:
<html>
<head>
<title>Formulario de carga</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="cargardatos.php" enctype="multipart/form-data" method="post">
	<input type="file" name="file1" /><br>
	<input type="file" name="file2" /><br>
	<input type="file" name="file3" /><br>
	<input type="file" name="file4" /><br>
	<br>
	<input type="submit">	
</form>
</body>
</html> 
cargardatos.php
Código PHP:
<?
session_start
();
$contador 0;
for (
$i=0;$i<4;$i++){
    if (!(
$_FILES['file'.($i+1)]['size']==0)){
        
$archivos[$contador] = $_FILES['file'.($i+1)];
        
$contador++;
    }
}
$_SESSION['archivos'] = $archivos;
header("Location: subirarchivo.php?archivo_actual=0");
?>
Como podeis ver, se llama a subirarchivo.php pasando como parametro archivo_actual=0, y este programa se ira llamando asi mismo hasta finalizar la carga de archivos, tal como se ve en el codigo siguiente:

subirarchivo.php
Código PHP:
<?
session_start
();
extract($_GET);
if (!(
$_SESSION['archivos'][$archivo_actual]['name'] == "")){
    
$carga=move_uploaded_file($_SESSION['archivos'][$archivo_actual]['tmp_name'],"archivo".$archivo_actual.".jpg");
    
header("Location: subirarchivo.php?archivo_actual=".($archivo_actual+1));
}else{
    echo 
"carga completa";    
}
?>
Es un poco cutre lo se, solo estoy probando(aunque si teneis otra idea mejor me la haceis saber) pero el problema que tengo es que no se guardan los archivos en el servidor. Supongo que es debido a que $_SESSION['archivos'] no viene del formulario, por lo que en ese momento no se recogen los archivos del usuario, pero no lo tengo muy claro.

¿¿ Alguna idea ??

Saludossss
  #2 (permalink)  
Antiguo 14/05/2008, 14:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Fallo al cargar archivo de manera indirecta

Hola jemarquesini,

Es totalmente incorrecto lo que propones, ya que los archivos temporales son borrados al terminar la ejecución de tu script, así que aunque lo guardes en una variable de sesión serán eliminados por el garbage collector.

Adicionalmente recuerda que si tu envías todo el lote de imágenes a PHP, el proceso de PHP no le da el control a tu script hasta que se hayan enviado todas las imágenes, por lo que jamas veras un ciclo de que se están enviando.

Tu única solución es usar algún control de envio mas dinámico, como un Applet en Java, o un uploader en Flash.

Saludos.
  #3 (permalink)  
Antiguo 14/05/2008, 15:04
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Fallo al cargar archivo de manera indirecta

Ok, muchas gracias, me imaginaba algo por el estilo, pero no tengo mucho experiencia con gestion de archivos.

Saludossss
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:13.