Foros del Web » Programando para Internet » PHP »

for each array de imagenes

Estas en el tema de for each array de imagenes en el foro de PHP en Foros del Web. buenas tardes alguien me puede decir en que estoy mal , resulta que tengo un formulario en donde en cada pregunta subire una o varias ...
  #1 (permalink)  
Antiguo 26/04/2016, 15:22
 
Fecha de Ingreso: diciembre-2014
Mensajes: 72
Antigüedad: 9 años, 4 meses
Puntos: 0
for each array de imagenes

buenas tardes alguien me puede decir en que estoy mal , resulta que tengo un formulario en donde en cada pregunta subire una o varias imagenes por eso son con el atributo multiple ahora se que esto seria mas facil si mi variable fuera diferente en acada uno de los input file pero por otras cuestiones de un script que uso tiene q ser el mismo nombre

Código HTML:
<form class="" action="subir_imagenes.php" method="post" enctype="multipart/form-data">
      <input type="file" name="files[seccion1]" multiple="true" />
      <input type="file" name="files[seccion2]" multiple="true" />
      <input type="file" name="files[seccion3]" multiple="true" />
       <input type="submit"value="subir archivos" />
    </form> 
este es mi php en donde quiero subir las imagenes al servidor , pero no se q me este faltando porque solo sube la ultima

Código PHP:
$ruta_imagenes="imagenes/";

move_uploaded_file($_FILES["files"]["tmp_name"]["seccion1"],$ruta_imagenes.$_FILES['files']['name']["seccion1"]);

move_uploaded_file($_FILES["files"]["tmp_name"]["seccion2"],$ruta_imagenes.$_FILES['files']['name']["seccion2"]);

move_uploaded_file($_FILES["files"]["tmp_name"]["seccion3"],$ruta_imagenes.$_FILES['files']['name']["seccion3"]); 
se que hay tengo q hacer con el for each pero no se como ponerlo
  #2 (permalink)  
Antiguo 27/04/2016, 02:14
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: for each array de imagenes

haz un print_r y veras cual es tu error.
Código PHP:
Ver original
  1. <pre>
  2. <?php print_r($_FILES);
  3. </pre>

Fijate:
Código PHP:
Ver original
  1. /* MAL */
  2. $_FILES['files']['name']["seccion1"]
  3.  
  4. /* BIEN */
  5. $_FILES['files']["seccion1"]['name']
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 27/04/2016, 02:45
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 10 meses
Puntos: 25
Respuesta: for each array de imagenes

Cita:
Iniciado por xerifandtomas Ver Mensaje
haz un print_r y veras cual es tu error.
Fijate:
Código PHP:
Ver original
  1. /* MAL */
  2. $_FILES['files']['name']["seccion1"]
  3.  
  4. /* BIEN */
  5. $_FILES['files']["seccion1"]['name']
Estas totalmente equivocado y vas a confundir a los demás:
En realidad es correcto:
Código PHP:
$_FILES['files']['name']["seccion1"
De hecho es tal como lo expone en el manual:
http://php.net/manual/es/features.fi...d.multiple.php

Por el amor de Dios al menos comprueba las cosas antes de responder a alguien, lo vas a confundir.
  #4 (permalink)  
Antiguo 27/04/2016, 02:59
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: for each array de imagenes

Cierto, error mio, no se en que estaba pensando.

Mi respuesta anterior es totalmente errónea.

Gracias por atajarlo a tiempo.
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 27/04/2016, 03:39
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: for each array de imagenes

Volviendo al tema, intenta hacer algunas comprobaciones adicionales
Hay muchas funciones para hacer la subida por ejemplo:

Código PHP:
Ver original
  1. <?php
  2. function upload_img($file,$nombre="img",$ruta="",$max_size= "5000000",$max_archivos=5){
  3.     $tipos_de_archivos= array("image/jpeg","image/jpg","image/png");
  4.  
  5.     if ($ruta=="") { $ruta = $_SERVER['DOCUMENT_ROOT']."/img/"; }
  6.     if ( !file_exists($ruta) ) {
  7.         if( !mkdir($ruta, 0775, true) ){ return 'No se a podido crear el directorio'; }
  8.     }
  9.  
  10.     $key_files=array_keys($file);
  11.     $numero_de_archivos= count($file[$key_files[0]]['name']);
  12.     if ($numero_de_archivos<1) {return 'No se ha cargado ningun archivo.';}
  13.     if ($numero_de_archivos>$max_archivos) {return 'Solo se pueden subir <b>'.$max_archivos.' archivos</b> a la vez.';}
  14.     if ( !is_array($file[$key_files[0]]['tmp_name']) ){return 'Se deben subir los archivos como un array.';}
  15.  
  16.     $tmp_name= $file[$key_files[0]]['tmp_name'];
  17.     $type= $file[$key_files[0]]['type'];
  18.     $size= $file[$key_files[0]]['size'];
  19.     $name= $file[$key_files[0]]['name'];
  20.     $error= $file[$key_files[0]]['error'];
  21.  
  22.     foreach ($tmp_name as $k => $v) {
  23.         if (!is_uploaded_file($v)) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.';}
  24.     }
  25.     foreach ($error as $k => $v) {
  26.         if ($v!==0) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.<br>'. $v;}
  27.     }
  28.     foreach ($type as $k => $v) {
  29.         if (!in_array($v, $tipos_de_archivos)){return '<br/>El archivo <b>'.$name[$k].'</b> no esta permitido. Solo archivos JPG, JPEG, PNG.';}
  30.     }
  31.     foreach ($size as $k => $v) {
  32.         if ($v>$max_size) {return '<br/>El archivo <b>'.$name[$k].'</b> supera el tama&ntilde;o permitido.';}
  33.     }
  34.     foreach ($name as $k => $v) {
  35.         $extension = end(explode('.', $v));
  36.         $nombre_final[$k]=$nombre.'-'.date('dmYHis').'-'.$k.'.'.$extension;
  37.     }
  38.    
  39.     foreach ($tmp_name as $k => $v) {
  40.         $destino= $ruta.$nombre_final[$k];
  41.         if(!move_uploaded_file($v, $destino)){return '<br/>No se ha podido mover el archivo al servidor.';}
  42.         $n[]=$nombre_final[$k];
  43.     }
  44. return $n;
  45. }
  46.  
  47. $subido=upload_img($_FILES,"nombre_img_sin_extension","ruta_completa");
  48. Print_r (  $subido );
Solo tienes que pasarle $_FILES el resto de parámetros son opcionales y devuelve un array con los nombres de los archivos subidos si todo hay ido bien.

También ten en cuenta que hay limitaciones a la hora de subir archivos establecidas en php mediante algunas directivas, revisa esto para más información: dificultades comunes
__________________
Unset($vida['malRollo']);
  #6 (permalink)  
Antiguo 27/04/2016, 07:21
 
Fecha de Ingreso: diciembre-2014
Mensajes: 72
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: for each array de imagenes

muchas gracias voy a validar lo que me comentan!
  #7 (permalink)  
Antiguo 29/04/2016, 22:07
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: for each array de imagenes

pues la verdad te dare un consejo amigo, por la web conseguiras muchas funciones jquery para agregar campos dinamicamente, asi puedes agregar campos para subir las imagenes que tu quieras, y al momento de hacer el registro solo haces un

Código PHP:
Ver original
  1. foreach($_FILES['file']['tmp_name'] as $key => $tmp_name )

para que recorras las cantidades de imagenes que quieras registrar

Etiquetas: formulario, imagenes, variable
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 07:05.