Foros del Web » Programando para Internet » PHP »

duda con el upload de múltiples ficheros

Estas en el tema de duda con el upload de múltiples ficheros en el foro de PHP en Foros del Web. Hola compañer@s. En esta ocasión resulta que quiero hacer una función que suba una seria de ficheros previamente cargados. Quiero decir, io tengo un formulario ...
  #1 (permalink)  
Antiguo 03/02/2010, 06:43
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
duda con el upload de múltiples ficheros

Hola compañer@s.

En esta ocasión resulta que quiero hacer una función que suba una seria de ficheros previamente cargados.

Quiero decir, io tengo un formulario con una serie de inputs type='file'. Unos como class='multi', que sirven para seleccionar varios ficheros, y otros normales.

Ahora, la duda reside en que no sé cómo obtener y pasar a la función que opere los múltiples.
Son arrays, lo sé, pero se me complican. Tengo el siguiente código en el index que se supone que debería recoger los datos del formulario y subirlos directamente.
Pero io lo que quiero es recoger los datos y pasárselos a una función. En esa función ia haré las subidas y todo lo que tenga que hacer más.

Código:
if(isset($insertar_ficheros))
{
	foreach ($_FILES["imagenes"]["error"] as $key => $error) 
	{
		if ($error == UPLOAD_ERR_OK) 
		{
			echo"$error_codes[$error]";
			move_uploaded_file(
			$imagenes_nombre_temp = $_FILES["imagenes"]["tmp_name"][$key],
			$imagenes_nombre_archivo = $_FILES["imagenes"]["name"][$key],
			$imagenes_tamano_archivo = $_FILES["imagenes"]["size"][$key]) or die("Problems with upload");
		}
	}
				
	foreach ($_FILES["archivos"]["error"] as $key => $error) 
	{
		if ($error == UPLOAD_ERR_OK) 
		{
			echo"$error_codes[$error]";
			move_uploaded_file(
			$archivos_nombre_temp = $_FILES["archivos"]["tmp_name"][$key],
			$archivos_nombre_archivo = $_FILES["archivos"]["name"][$key],
			$archivos_tamano_archivo = $_FILES["archivos"]["size"][$key]) or die("Problems with upload");
		}
	}
	
}
Esos son los foreach de los archivos múltiples. Cómo podría hacer para meterlos en un array tridimensional y luego mandar ese array a una función??
Muchas gracias.

Última edición por aniMAYtions; 03/02/2010 a las 07:24 Razón: uf, ke foión...
  #2 (permalink)  
Antiguo 03/02/2010, 09:34
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Bueno, como voy probando e intentando hacer prograsos y veo que nadie lo entiende lo preguntaré de otra forma.

Se supone que debo recibir un array de imágenes, pero ese array a su vez se compone de 3 partes
$array["imagenes"]["tmp_name"]
$array["imagenes"]["name"]
$array["imagenes"]["size"]

Si fuese un input type='file' simple io lo recogería de la siguiente forma para luego enviarlo a la función que lo procese

Código:
$file_nombre_temp = $HTTP_POST_FILES['file']['tmp_name'];
$file_nombre_archivo = $HTTP_POST_FILES['file']['name'];
$file_tamano_archivo = $HTTP_POST_FILES['file']['size'];
Como podría hacer para recoger el array, meterlo en otro array y enviarlo a la función?? o simplementa cómo podría enviarle el array a la función??

Gracias de nuevo.
  #3 (permalink)  
Antiguo 03/02/2010, 09:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: duda con el upload de múltiples ficheros

No entiendo muy bien tu pregunta, sólo tienes que recorrer el array y llamar a la función:
Código PHP:
Ver original
  1. foreach ($_FILES['imagenes']['tmp_name'] as $key => $value) {
  2.     $file_nombre_temp = $value;
  3.     $file_nombre_archivo = $_FILES['imagenes']['name'][$key];
  4.     $file_size_archivo = $_FILES['imagenes']['size'][$key];
  5.     // Llamar función
  6. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 03/02/2010, 09:51
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Pero claro, a la funcion la iamas dentro del foreach.
y lo suio es iamar a la funcion cuando tengas el array de arrays constriudo.

O sea, si inserto 3 imágenes io lo que quiero es mandarle a la función un array con los datos de las 3 imágenes... es muy difícil??

Gracias!!
  #5 (permalink)  
Antiguo 03/02/2010, 09:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: duda con el upload de múltiples ficheros

Es sencillo construir un array dentro del foreach para luego pasar a la función. Pero, ¿en qué formato precisamente espera recibir los datos esa función?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 03/02/2010, 10:43
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Pues estaria bien que los recibiese en formato array para una vez dentro de la función extraer los datos que me hagan falta y realizar las acciones que debo realizar.

Quiero decir que me gustaría pasarle a la funcion el array imagenes que estuviese compuesto, por ejemplo por
imagenes[1][tmp_name]
imagenes[1][name]
imagenes[1][size]
imagenes[2][tmp_name]
imagenes[2][name]
imagenes[2][size]
.
.
.
.

La cosa está en que no me sale el contruir ese array partiendo desde el otro array... da lo mismo que sea un foreach que un for o lo que mejor quede.

Saludos!!
  #7 (permalink)  
Antiguo 03/02/2010, 11:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: duda con el upload de múltiples ficheros

¿Algo así?:
Código PHP:
Ver original
  1. $archivo = array();
  2. foreach ($_FILES['imagenes']['tmp_name'] as $key => $value) {
  3.     $archivo[] = array(
  4.         'tmp_name' => $value,
  5.         'name' => $_FILES['imagenes']['name'][$key],
  6.         'size' => $_FILES['imagenes']['size'][$key]
  7.     );
  8. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 03/02/2010, 11:36
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Perdona pero lo del $key me despista.
Luego tendría que iamar a la función procesaArray($archivo)??
Y desde procesaArray($archivo) ir sacando informacion con un for, con un foreach??

Uy que perdida me veo.... :)

Vamos, que como me refiero a $imagenes[1]["name"] por ejemplo.

Gracias!!
  #9 (permalink)  
Antiguo 03/02/2010, 11:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: duda con el upload de múltiples ficheros

Cita:
Iniciado por aniMAYtions Ver Mensaje
Luego tendría que iamar a la función procesaArray($archivo)??
Y desde procesaArray($archivo) ir sacando informacion con un for, con un foreach??
Sí.

Para que veas cómo queda el array después del bucle:
Código PHP:
Ver original
  1. <pre>
  2. <?php print_r($archivo); ?>
  3. </pre>
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 03/02/2010, 12:01
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Maravilloso!!
Muchísimas gracias David, voy a probar lo de la función ahora mismo y os cuento.

Saludos.
  #11 (permalink)  
Antiguo 03/02/2010, 13:04
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: duda con el upload de múltiples ficheros

Una última cosilla antes de irme a casa y ia para probarla mañana a primera hora...

Resulta que, aunque deje el campo vacío, osea que no inserte ningún archivo, el count del array imagenes me vale 1. Y si meto 3 archivos ese count me vale 3.

Cómo podría comprobar si he metido algo o no? o sea, que el count me salga 0 si no hay archivos...

Gracias!!

Etiquetas: ficheros, upload
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 00:58.