Foros del Web » Programando para Internet » PHP »

Como puedo recorrer $_FILES['archivos']

Estas en el tema de Como puedo recorrer $_FILES['archivos'] en el foro de PHP en Foros del Web. Hola, tengo una pagina (pagina1) en la que muestro varios input tipo FILE para subir al servidor varios archivos, luego en la pagina2, realizo el ...
  #1 (permalink)  
Antiguo 23/02/2006, 07:12
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Como puedo recorrer $_FILES['archivos']

Hola, tengo una pagina (pagina1) en la que muestro varios input tipo FILE para subir al servidor varios archivos, luego en la pagina2, realizo el proceso de subirlos realmente.
El problema es que para poder hacerlo, tengo que hacer un foreach y recorrer el $_FILE por cada archivo que se pretende subir, pero no se cómo formularlo.

Muchas gracias por la ayuda!
  #2 (permalink)  
Antiguo 23/02/2006, 16:00
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Te sugiero que le eches un ojo a este link http://www.forosdelweb.com/showthrea...arios+archivos
  #3 (permalink)  
Antiguo 23/02/2006, 18:19
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
En Envío de multiples ficheros lo ejemplifican bien

Código PHP:
Here is a the simple test form I needed, pieced togther from 2 or 3 posts in the documentation elsewhere.

<html>
<head>
<title>HTML Form for uploading image to server</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
//places files into same dir as form resides
foreach ($_FILES["pictures"]["error"] as $key => $error) {
   if (
$error == UPLOAD_ERR_OK) {
       echo
"$error_codes[$error]";
       
move_uploaded_file(
         
$_FILES["pictures"]["tmp_name"][$key],
         
$_FILES["pictures"]["name"][$key]
       ) or die(
"Problems with upload");
   }
}
?>
</body>
</html>
  #4 (permalink)  
Antiguo 24/02/2006, 08:28
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 12 años, 8 meses
Puntos: 1
Muchas gracias chicos! ya mismo me pongo a ver las ayuditas!

Saludos
  #5 (permalink)  
Antiguo 25/02/2006, 06:58
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 12 años, 8 meses
Puntos: 1
Chicos, probe con el código que me aconsejaron pero me sale este error:

WARNIG: INVALID ARGUMENT SUPPLIED FOR FOREACH()


Cualquier ayuda será muy bien recibida!!!!


El código que utilicé es el siguiente:


Código PHP:
foreach ($_FILES['archivos']['error'] as $key => $error
# Iterar sobre la colección de archivos
    
if ($error == UPLOAD_ERR_OK
    { 
// Si no hay error
          
$tipo $_FILES['archivos']['type'][$key];
        if ((
$tipo == "image/gif") OR  ($tipo == "image/jpeg")) 
        {
            
$tamanio $_FILES['archivos']['size'][$key];
            if (
$tamanio 200000000)
            {
                       
// leer del archvio temporal .. el binario subido. 
                     // "rb" para Windows .. Linux parece q con "r" sobra ... 
            
$tmp_name $_FILES['archivos']['tmp_name'][$key];
            
$imagen addslashes(fread(fopen($tmp_name"rb"),         filesize($binario_nombre_temporal))); 
            
$nombre $_FILES['archivos']['name'][$key];
            
                         
$alta_img mysql_query("INSERT INTO perfiles_img (id, id_perfil,     imagen, nombre, tipo, tamanio) VALUES ('', $id, '$imagen', '$nombre', '$tipo', '$tamanio'",$conexion);
                         echo 
"El archivo ha sido cargado correctamente.";
                            
            }
            else
            {
            echo 
"El archivo excede el tamaño permitido";
            }
# if
        
}
        else
        {

        echo 
"La extensión o el tamaño de los archivos no es correcta. Se permiten archivos .gif o .jpg"
        } 
#if
    
#if
                
#foreach 

Última edición por jam1138; 25/02/2006 a las 07:41
  #6 (permalink)  
Antiguo 25/02/2006, 07:42
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
Ups, copié y pegué el código.. ahora q lo veo tiene un error, ahora lo corrijo

Código PHP:
<html>
<head>
<title>HTML Form for uploading image to server</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
//places files into same dir as form resides
foreach ($_FILES["pictures"]["tmp"] as $key => $error) {
       
move_uploaded_file(
         
$_FILES["pictures"]["tmp_name"][$key],
         
$_FILES["pictures"]["name"][$key]
       ) or die(
"Problems with upload");
}
?>
</body>
</html>
  #7 (permalink)  
Antiguo 25/02/2006, 07:47
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
El error te dice que lo que le estás pasando a foreach() no es una matriz. ¿y tu formulario?.

Antes debes entender qué es una matriz y cómo manejarla, como "desplazarte" en ella. $_FILES no es más que una matriz.

Hace tiempo puse esto, la verdad que ya ni recuerdo lo que dije, solo sé que ahí esta: http://www.forosdelweb.com/showpost....9&postcount=10

... también el tema esta en las FAQ. Para problemas concretos con tu código muestralo todo.

Saludos y suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:00.