Foros del Web » Programando para Internet » PHP »

Subir mas de un archivo a la vez

Estas en el tema de Subir mas de un archivo a la vez en el foro de PHP en Foros del Web. Hola es posible hacer esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form method = "post" enctype = "multipart/form-data" action = "" > < input ...
  #1 (permalink)  
Antiguo 02/01/2013, 04:19
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Subir mas de un archivo a la vez

Hola es posible hacer esto:

Código HTML:
Ver original
  1. <form method="post" enctype="multipart/form-data" action="">
  2. <input type="file" name="primer_file" /><br />
  3. <input type="file" name="segundo_file" /><br />
  4. </form>

Y luego con el php recibir los asi:

Código PHP:
Ver original
  1. print $_FILES['primer_file']['tmp_name'];
  2. print $_FILES['segundo_file']['tmp_name'];

Estoy intentado hacer esto pero me salen unos resultados muy raros... y pregunto si esto existe o tengo que usar el sistema de múltiples archivos con [] ??

Saludos
  #2 (permalink)  
Antiguo 02/01/2013, 05:48
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Subir mas de un archivo a la vez

Que yo sepa en teoría así debería funcionar. Cual es el problema que tienes?
  #3 (permalink)  
Antiguo 02/01/2013, 05:58
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Subir mas de un archivo a la vez

http://php.net/manual/es/features.fi...d.multiple.php

Saludos!
  #4 (permalink)  
Antiguo 02/01/2013, 06:37
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Subir mas de un archivo a la vez

alyciashape el problema es que el is_uploaeded_file() siempre me devuelve false o casi siempre... cuando el archivo no es compatible con las extensiones que he permitido en el siguiente codigo poes no tengo ni idea poreuq el is_uploaded_file devuelve true y el if continua.

Tengo esto:

Código PHP:
Ver original
  1. if(is_uploaded_file($_FILES['image_f']['tmp_name'])){
  2.                 //Definir nombres
  3.                 $nombre=$_FILES['image_f']['name'];
  4.                 $nombre=strtolower($nombre);
  5.                 $tipo=$_FILES['image_f']['type'];
  6.                 $tipo=strtolower($tipo);
  7.                 $size=$_FILES['image_f']['size'];
  8.                 $error=$_FILES['image_f']['error'];
  9.                 $extension=substr($tipo,strpos($tipo,'/')+1);
  10.                 $name=$_SESSION['user'].'-'.time().'.'.$extension;
  11.                 $lugar='photos/backgrounds/';
  12.                 //Fin de definir nombres
  13.                
  14.                 if(!empty($nombre) && isset($nombre)){
  15.                     if($error==0){
  16.                         if(strpos($tipo,'gif') || strpos($tipo,'jpg') || strpos($tipo,'jpeg') || strpos($tipo,'bmp') || strpos($tipo,'png')){
  17.                             if($size<819200){
  18.                                 if(!move_uploaded_file($_FILES['image_f']['tmp_name'],$lugar.$name)){
  19.                                     $errores[3]='notificacion';
  20.                                 }
  21.                             }else{
  22.                                 $errores[3]='notificacion';
  23.                             }
  24.                         }else{
  25.                             $errores[3]='notificacion';
  26.                         }
  27.                     }else{
  28.                         $errores[3]='notificacion';
  29.                     }
  30.                 }else{
  31.                     $errores[3]='notificacion';
  32.                 }
  33.             }else{
  34.                 $errores[3]='notificacion';
  35.             }


He comprobado y el $_FILES['image_f']['tmp_name'] si contiene el nombre del tmp. No se que pasa...

Tengo el mismo codigo o parecido en otras dos programas y no tengo este problema.(La diferencia es que en este se suben 2 archivos a la vez)


rottenp4nx gracias por el enlace pero yo no tengo problema en hacer lo de multiples archivos solo quiero saber porque no se puede como intento yo, con nombres diferentes y sin []

Saludos

Última edición por patilanz; 02/01/2013 a las 13:41
  #5 (permalink)  
Antiguo 03/01/2013, 14:19
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Subir mas de un archivo a la vez

Puede ser algun problema con la version de php la mia es 5.2 o del formulario?
  #6 (permalink)  
Antiguo 03/01/2013, 15:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir mas de un archivo a la vez

Cita:
Iniciado por patylanz
cuando el archivo no es compatible con las extensiones que he permitido en el siguiente codigo poes no tengo ni idea poreuq el is_uploaded_file devuelve true y el if continua.
A qué extensiones te refieres?, cómo es que las permites?

Lo primero es verificar si $_FILES['archivo']['error'] es igual a cero, lo que quiere decir que se subió correctamente y puedes usar is_uploaded_file() sólo como medida de seguridad: http://php.net/is_uploaded_file
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 03/01/2013, 15:25
 
Fecha de Ingreso: diciembre-2012
Mensajes: 20
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Subir mas de un archivo a la vez

Yo lo hago asi:

Pagina del formulario:

</tr><tr><td class=boxmenu bgcolor=#D5D500><font class="newsd">Nom.foto1</font></td>
<td><input type="text" name="foto1" id="foto1" value=' .$row[foto1].' /></td>
<td class=boxmenu bgcolor=#D5D500><font class="newsd">Subir Foto</font></td>
<td><input name="foto" type="file" />
</td>


Ahora dentro de la carpeta en la que vas a subir los formularios pones un php que reciba los files:

<?
//Up imagen
$ruta = "imgclasif" . $_FILES['foto']['name'];
copy($_FILES['foto']['tmp_name'], $ruta);

?>


Las imagenes o files se les agregara el nombre de la carpeta, osea en tu codigo deveras poner ej: /carpetaimg/carpetaimgTuimagen.jpg

Espero te ayude y no te lie
  #8 (permalink)  
Antiguo 03/01/2013, 16:51
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Subir mas de un archivo a la vez

Hola triby me refiero a las extensiones en esta linea :

Código PHP:
Ver original
  1. if(strpos($tipo,'gif') || strpos($tipo,'jpg') || strpos($tipo,'jpeg') || strpos($tipo,'bmp') || strpos($tipo,'png'))

Yo verifico primero si el archivo ha sido subido y luego el error tiene que ser lo contrario?

Hola leofenixcomp gracias por tu codigo. No me lio y si me sirve aprendí mas(no sabia lo de copy) pero prefiero utilizar lo anterior ya que hay mas comprobaciones y mas opciones.

Saludos
  #9 (permalink)  
Antiguo 03/01/2013, 17:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir mas de un archivo a la vez

Basado en los códigos de error es mucho más fácil determinar si el archivo se subió correctamente o no:

0 = OK, se subió un archivo y llegó correctamente
1, 2, 3 = No recuerdo
4 = El usuario no seleccionó archivo
5+ = No recuerdo, consulta la lista en: http://php.net/manual/es/features.fi...oad.errors.php

Luego, el contenido de type no es confiable, veamos:
Cita:
Iniciado por Manual de PHP
$_FILES['userfile']['type']

El tipo mime del archivo, si el navegador proporciona esta información. Un ejemplo podría ser "image/gif". Este tipo mime, sin embargo no se verifica en el lado de PHP y por lo tanto no se garantiza su valor.

Más info en: http://php.net/manual/es/features.fi...ost-method.php
Entonces, una forma fácil es obtener la extensión y compararla con las permitidas. Lo ideal es que uses Fileinfo.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: vez
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 19:13.