2012-03-21 13 views
21

Tengo ese formulario de carga de archivos múltiples básico y bien conocido. Algo por el estilo ...Cuenta y limita el número de archivos cargados (entrada de archivo HTML)

<input type="file" multiple="multiple" name="something[]" /> 

¿Hay alguna manera (de preferencia una opción no modificable) para limitar el número de archivos que el usuario puede seleccionar? Por límite quiero decir estrictamente bloqueado, no solo una advertencia si se excede el número.

Gracias de antemano. :)

+0

Siempre se puede bloquear en el código PHP, pero no hay suficiente información para saber cómo se comporta su interfaz. – Scuzzy

Respuesta

7

Puede implementar una solución de javascript para verificar el número de archivos que se han seleccionado, que luego puede utilizar para prohibir la carga en el servidor. Sin embargo, realmente solo habrá soluciones del lado del cliente para este problema, ya que realmente no hay nada que impida que un usuario publique estos archivos en su script php de todos modos. Puede especificar un límite de tamaño de carga máximo, pero no es específico para la cantidad de archivos que se cargan.

Su mejor opción es implementar algunas comprobaciones de JavaScript, especificando un tamaño de carga máximo razonable para su servidor http (o en PHP), y luego ignorando cualquier archivo cargado si excede su conteo máximo.

Leer acerca de la API de archivos HTML 5 para restringir el recuento de los archivos seleccionados: http://dev.w3.org/2006/webapi/FileAPI/

Aquí está la documentación de php.ini que explican cómo hacer que una limitación de tamaño de los archivos subidos: http://php.net/manual/en/ini.core.php

Como se sugirió en los comentarios, echa un vistazo a: http://php.net/manual/en/ini.core.php#ini.max-file-uploads

+8

'ya que realmente no hay nada que impida que un usuario publique estos archivos en su script php': De hecho, existe. En 'php.ini', puede limitar ese número con la opción' max_file_uploads' (http://www.php.net/manual/en/ini.core.php#ini.max-file-uploads) – marvin

+2

@marvin: agréguelo como respuesta, por favor – zerkms

+1

@marvin. Había asumido que "la cantidad máxima de archivos permitidos para ser cargados _simultaneously_" significaba un método para evitar conexiones HTTP simultáneas al cargar diferentes archivos. No es ese el caso? – GoldenNewby

7

todos sabemos que en una matriz first element is stored in 0 th index, 2nd in 1st index......nth in (n-1)th index

ahora usted no puede tomar count($_FILES['something']) que siempre volverá 5, ya que hay 5 claves de la matriz

Ahora la pregunta es ¿qué $_FILES['something']['name'][0] contiene? => nombre del primer archivo subido

a fin de comprobar como

if(empty($_FILES['something']['name'][0])) 
{ 
    //checking whether a single file uploaded or not 
    //if enters here means no file uploaded 
    //so if you want you may put a check/validation here to make file 
    //upload a must in your website 
} 
if(isset($_FILES['something']['name'][5])) 
{ 
    //checking whether 6 files uploaded or not 
    //so here you can put a check/validation to restrict user from 
    //uploading more than 5 files 
} 
Cuestiones relacionadas