Foros del Web » Programando para Internet » PHP »

PHP solo me permite subir 5 archivos

Estas en el tema de PHP solo me permite subir 5 archivos en el foro de PHP en Foros del Web. Estoy intentando subir varios archivos mediante un formulario, de la siguiente forma: Código HTML: <form enctype= "multipart/form-data" > <input name= "archivo[]" type= "file" id= "archivos" ...
  #1 (permalink)  
Antiguo 29/10/2014, 20:58
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
PHP solo me permite subir 5 archivos

Estoy intentando subir varios archivos mediante un formulario, de la siguiente forma:

Código HTML:
<form enctype="multipart/form-data">
       <input name="archivo[]" type="file" id="archivos" multiple="true"/>
       <input type="button" value="Subir archivos" id="upArchivos"/>
 </form> 
al hacer click invoco a otra pagina mediante jquery, y subo los archivos, y funciona bien.

El problema es que solo puedo subir maximo 5 archivos, y requiero que ese limite sea de 10.

Me podrian ayudar por favor, de antemano muchas gracias
  #2 (permalink)  
Antiguo 29/10/2014, 21:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP solo me permite subir 5 archivos

Consulta el manual, ahí se explica cómo configurar el límite de archivos a subir.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/10/2014, 10:45
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Muchas gracias pateketrueke, ya consulte el manual y enconte la directiva max_file_uploads, la cual se describe aqui: http://php.net/manual/es/ini.core.php#ini.max-file-uploads

Estoy utilizando SLES y ya revise en el archivo /etc/php5/apache2/php.ini y tengo lo siguiente: max_file_uploads = 20.

Entonces no se porque solo me permite subir 5 archivos.

A que otra cosa se puede deber?

Muchas gracias
  #4 (permalink)  
Antiguo 30/10/2014, 11:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP solo me permite subir 5 archivos

Es curioso, hace falta el method="post" en el formulario ¿tal vez será por eso?

Además sería bueno si puedes depurar con var_dump($_FILES) para observar el total de datos que recibes, como nos es imposible adivinar tu script completo es complicado deducir si el problema viene de ahí o no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/10/2014, 12:38
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

no hace falta el 'POST', debido a que mi scipt (hecho en jquery) es el siguente:
Código HTML:
    $("#upArchivos").click(function(){
        var formData = new FormData($(".formArchivos")[0]);
        var message = ""; 
            $.ajax({
                url: 'upload.php',  
                type: 'POST',
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                beforeSend: function(){
                    message = $("<span class='before'>Subiendo Archivo(s), por favor espere...</span>");
                    showMessageSub(message)        
                },
                //una vez finalizado correctamente
                success: function(data){
                    message = $("<span class='success'>Archivo(s) Cargado(s)"+data+"</span>");
                    showMessageSub(message);
                },
                //si ha ocurrido un error
                error: function(){
                    message = $("<span class='error'>Ha ocurrido un error.</span>");
                    showMessageSub(message);
                }
            });
    });
el archivo upload.php al que se hace referencia:
Código PHP:
<?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
{
    
$cantidad count($_FILES["archivo"]);
    
$respuesta=array();
    for (
$i=0$i $cantidad$i++) {
        
$file $_FILES['archivo']['name'][$i];
        
$respuesta[$i][0]=$file
        
//comprobamos si existe un directorio para subir el archivo si no es así, lo creamos
        
if(!is_dir("files/")) 
            
mkdir("files/"0777);
         
        
$destino "files/".$file;
        
//comprobamos si el archivo ha subido
        
if ($file && move_uploaded_file($_FILES['archivo']['tmp_name'][$i],$destino))
        {
           
sleep(2);//retrasamos la petición 2 segundos
           
$respuesta[$i][1]='true';
        }else{
            
$respuesta[$i][1] = 'false';
        }
    }
    echo 
json_encode($respuesta);
}else{
    throw new 
Exception("Error Processing Request"1);   
}
de hecho aqui tengo otro problema, ya que no he logrado que el script interprete la respuesta en json.

y el Formulario:
Código HTML:
<form enctype="multipart/form-data" class="formArchivos">
       <input name="archivo[]" type="file" id="archivos" multiple="true"/>
       <input type="button" value="Subir archivos" id="upArchivos"/>
 </form> 
lo raro es que si subo solo un archivo me toma 5, aunque los otros con nombre "null" y si subo mas de 5 archivos solo sube 5, sin marcar ningun error.
  #6 (permalink)  
Antiguo 30/10/2014, 16:53
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Hola de nuevo, ya resolvi el problema de subir los 5 archivos, ejecute la instruccion que me comentas "var_dump($_FILES)" y lo que veo es que me regresa informacion de la siguiente forma:

["archivo"]=> array(5) {
["name"]=> array(1) { [0]=> string(11) "Archivo.txt" }
["type"]=> array(1) { [0]=> string(24) "application/octet-stream" }
[tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phpQnuIFF" }
["error"]=> array(1) { [0]=> int(0) }
["size"]=> array(1) { [0]=> int(7368) }
}

por alguna razon (que desconozco), me entrega un array["archivo"] de longitud 5, si envio mas de 5 archivos aun asi me envia un array["archivo"] de longitud 5, lo que cambia son los otros arreglos, los cuales si tienen la cantidad correcta de archivos que subo, asi que para obtener la cantidad de archivos cambie la instruccion:

$cantidad = count($_FILES["archivo"]);
por
$cantidad = count($_FILES["archivo"]["name"]);

y con eso ya obtengo la cantidad correcta, muchas gracias!!!!

ahora tengo el problema al retornar el resultado en JSON
  #7 (permalink)  
Antiguo 30/10/2014, 20:20
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: PHP solo me permite subir 5 archivos

ahora deberias hacer ver que devuelve data

console.log(data);
  #8 (permalink)  
Antiguo 31/10/2014, 02:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: PHP solo me permite subir 5 archivos

Cita:
Iniciado por kochas_40 Ver Mensaje
por alguna razon (que desconozco), me entrega un array["archivo"] de longitud 5...
En realidad, $_FILES['archivo'] es un array asociativo que contiene a cinco arrays en donde cada uno contiene la información del archivo cargado. Por eso la longitud 5.

Cita:
Iniciado por kochas_40 Ver Mensaje
ahora tengo el problema al retornar el resultado en JSON
En el método $.ajax, añade la propiedad dataType con el valor JSON, de este modo, el método procesará la respuesta como un objeto JSON.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 31/10/2014, 11:35
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Buenos dias
Cita:
Iniciado por Patriarka Ver Mensaje
ahora deberias hacer ver que devuelve data

console.log(data);
No hacia el console.log(data); debido a que el resultado "data" lo estoy mandando como salida en la pagina.
  #10 (permalink)  
Antiguo 31/10/2014, 11:44
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: PHP solo me permite subir 5 archivos

y que muestra?
es posible que si data no es json debas parsearlo
  #11 (permalink)  
Antiguo 31/10/2014, 11:53
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Buenos dias
Cita:
Iniciado por Alexis88 Ver Mensaje
En realidad, $_FILES['archivo'] es un array asociativo que contiene a cinco arrays en donde cada uno contiene la información del archivo cargado. Por eso la longitud 5.
Aun no me queda claro porque $_FILES['archivo'] me entrega un array de longitud 5 independientemente de la cantidad de archivos que mande, si mando uno la longitud es 5, y si mando 8, tambien es 5, es por eso que mejor utilizo $cantidad = count($_FILES["archivo"]["name"]);, ya que ahi la longitud coincide con la cantidad de archivos que envio

Cita:
Iniciado por Alexis88 Ver Mensaje
En el método $.ajax, añade la propiedad dataType con el valor JSON, de este modo, el método procesará la respuesta como un objeto JSON.

Saludos
ya agregue la propiedad dataType: "json", y con eso fue suficiente.

Muchas gracias por tu ayuda

Saludos!!
  #12 (permalink)  
Antiguo 31/10/2014, 12:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: PHP solo me permite subir 5 archivos

Cita:
Iniciado por kochas_40 Ver Mensaje
Aun no me queda claro porque $_FILES['archivo'] me entrega un array de longitud 5 independientemente de la cantidad de archivos que mande, si mando uno la longitud es 5, y si mando 8, tambien es 5, es por eso que mejor utilizo $cantidad = count($_FILES["archivo"]["name"]);, ya que ahi la longitud coincide con la cantidad de archivos que envio
Es por lo que te dije. $_FILES['archivo'] contiene cinco arrays, es decir, cinco elementos, en donde cada uno contiene la información de los archivos seleccionados. Si, por ejemplo, hubieras seleccionado 20 archivos, cada uno de los cinco arrays contendría la información de los 20 archivos, es por eso que cuando verificas el tamaño de $_FILES['archivo']['name'], obtienes el número de archivos seleccionados.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 31/10/2014, 13:33
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Cita:
Iniciado por Patriarka Ver Mensaje
y que muestra?
es posible que si data no es json debas parsearlo
muestra una cadena de este tipo:
["Imagen.jpg","true"]]

Basto con agregar la propiedad dataType: "json" a la peticion ajax

Muchas Gracias!!
  #14 (permalink)  
Antiguo 31/10/2014, 13:37
 
Fecha de Ingreso: octubre-2014
Mensajes: 29
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: PHP solo me permite subir 5 archivos

Cita:
Iniciado por Alexis88 Ver Mensaje
Es por lo que te dije. $_FILES['archivo'] contiene cinco arrays, es decir, cinco elementos, en donde cada uno contiene la información de los archivos seleccionados. Si, por ejemplo, hubieras seleccionado 20 archivos, cada uno de los cinco arrays contendría la información de los 20 archivos, es por eso que cuando verificas el tamaño de $_FILES['archivo']['name'], obtienes el número de archivos seleccionados.

Saludos
Ya te entendi!!!!!!!!

$_FILES['archivo'] es un arreglo de longitud 5 porque almacena los datos en cada posicion
posicion 0: "name"
posicion 1: "type"
posicion 2: "tmp_name"
posicion 3: "error"
posicion 4: "size"

y dentro de cada uno ya se contiene un arreglo con la informacion de cada archivo.

Muchas gracias!!!!!!!

Etiquetas: formulario, permite
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 17:19.