2011-02-09 22 views
5

validaciones son un gran problema, ya que si puedo validar en php que tiene todas las funciones, etc i necesita para que funcione .. Pero primero carga el archivo en una ubicación temporal y luego los cheques, que aspira. Si alguien carga un archivo de 100 mb, tiene que esperar el momento para que no se produzca ningún error, pero solo un php interno se equivoca al colgar la página.carga de archivos de validación de tamaño

Una manera: JS

//file is id of input file 
alert(document.getElementById('file').files[0].fileSize); 

Esto funciona en Firefox, Safari, Chrome supongo que también, NO: En la ópera, muy seguro de IE también, pero IE puede ser atendido por ActiveX tamaño del archivo pero Opera i todavía estoy atascado. ¿Tan inutilizable, de todos modos para evitarlo?

Segundo: Estaba pensando, ¿Puedo dar una alerta de PHP personalizado o algo estableciendo el tamaño máximo en php.ini o algo así, que fácilmente podría resolver el problema. Eso es lo que estoy buscando.

Otra actualización:

He estado jugando con rapidshare entender que hay de nuevo, me di cuenta incluso que el uso de JavaScript comprobación de tamaño de archivo: P Ahora que funciona muy bien con Firefox, y los otros como he dicho , incluso IE, ya que tiene un método ActiveX fallido pero Opera es la víctima: P En ese caso, no pueden dar un elegante error de javascript. Pero sí tienen una validación de lado del servidor que se demora unos segundos más, no es uniforme pero finalmente muestra un pequeño error.

Entonces sólo tiene que descubrir que parte del lado del servidor ahora sin publicar, y en mi mente sólo una manera de hacerlo:

  1. Algunos tamaño php interna máx aumentó error que yo pueda personalizar o correr alguna secuencia de comandos para averiguar si se ha alcanzado el tamaño máximo o se ha encontrado el POST excedido o algo por el estilo. // NINGUNA IDEA SOBRE ESTO. Espero que un tipo de servidor pueda ayudar :) Creo que esto es lo que va a resolver si alguien es un gurú servidor de php aquí.

Gracias y saludos. Por favor ayuda. :)

+0

¿No puede simplemente poner algo de texto al lado del cuadro de entrada que dice "Max 100meg"? Si el usuario intenta cargar 10,000 megas a través de Opera, solo ellos mismos tienen la culpa. –

+0

: P Eso suena bien, pero esa es la copia de seguridad, principalmente quiero ver este trabajo. Estoy bastante seguro de que puedo mostrar algo diferente a la congelación de la página si se excede el tamaño del archivo. Esa es la cosa. –

+0

Lo he visto en http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/#sec16 que podría ayudar. Aparte de eso, iría con lo que @Marc B dijo –

Respuesta

0

Puede establecer el tamaño máximo permitido en PHP, Javascript & Apache.

Utilice Javascript para los usuarios más amigables, ya que alerta al usuario de inmediato.

Utilice PHP al lado para tener una manera simple de verificar después de la carga.

Uso Apache última ya que es bastante bajo nivel y creo que la comprobación de demasiado grande de un archivo (para dar un buen alerta al usuario) es más difícil de esta manera.

+0

¿Cómo verificaría y haría cumplir un límite de tamaño en Javascript? –

+0

@Pekka lo siento, estaba equivocado sobre la comprobación de Javascript. Aunque, una cosa que podría hacer es crear un formulario AJAX que envíe con Javascript y de esa manera, cuando PHP obtenga los datos, verá que el archivo es demasiado grande y aparecerá una alerta en la página del formulario diciendo que el archivo es demasiado grande. – Patrick

+0

tengo la respuesta, tendrá que buscar el último error del registro y usarlo. AJAX no se puede usar con archivos. –

1

Aquí es un plugin que utiliza memoria flash + (javascript MooTools) para hacer la carga de archivos. La ventaja de este complemento es que es compatible y puede Github. Puede limitar el tamaño máximo, etc., y verificar la información del archivo antes de la carga. Además, tiene un ejemplo para backend usando PHP sobre cómo se manejan los archivos después de que se cargan.

Fancyupload

Características

  • seleccionar y cargar varios archivos
  • filtrar archivos por tipo en el selecto
  • diálogo Una gran cantidad de posibles eventos a agregar su propio comportamiento
  • Mostrar y filtrar la información útil del archivo antes de la carga comienza
  • subidas límite de archivo de recuento, tipo o tamaño
  • plataforma y el servidor independiente, sólo necesita Flash9 + (> 95% de penetración), que funciona en todos los navegadores con él instalado

Aquí está el plugin de jQuery que hace lo mismo que los MooTools uno:

Uploadify

+0

No, no estoy interesado en cosas ya hechas .. Me gusta hacer mis propios códigos :) –

0

Se puede utilizar una solución de servidor.

Usa $_SERVER['CONTENT_LENGTH'] después de intentar cargar el archivo. Esta variable devuelve el tamaño del archivo cargado, incluso si la carga falló.

if(isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH']>2097152) 
$error = 'Upload FAILED, file is too large !'; 

Este trabajo fino método para todos los casos de errores al archivo de carga, incluso si cuyo tamaño es mayor que MAX_FILE_SIZE, upload_max_filesize o post_max_size (de php.ini)

Para conocer más funciones que puede intentar http://valums.com/ajax-upload/

+1

Lo que pasa es que se queda atascado, ya que se comprueba después de que se carga el archivo, lo que es cojo. –